47 votes

Convertir un Dépôt Mercurial Git

J'ai déjà essayé hg2git via fast-export et j'ai déjà essayé hg-git.

À la fois, sans succès. hg2git effectivement travaillé, mais j'ai dû demander à un ami qui utilise une machine Unix pour le faire. Et qui a foiré tous les sauts de ligne sont tout au long de la fichiers.

hg-git simplement échoué avec quelques libzip compression d'erreur.

Quelqu'un a eu tout le succès de la conversion d'un hg repo git sur Windows?

Pour être clair, je ne se soucient pas de l'interopérabilité. Je veux le port de l'ensemble des pensions de partir de hg pour git, en prenant l'histoire avec moi. Je n'ai pas besoin de pousser les changements en arrière et en avant - convertir une fois.

Merci à l'avance!

57voto

Mauvis Ledford Points 12424

A la suite sur mon Mac pour réussir à l'exportation d'un Mercurial repo Git (avec plein de branches):

mkdir myrepo; cd myrepo;
git clone git://repo.or.cz/fast-export.git .
rm -rf .git .gitignore
git init
./hg-fast-export.sh -r ../path/to/local/hg/repo
git clean -f # remove fast-export files

14voto

Trey Gramann Points 1229

Windows 7 64 bits Solution

Comment faire pour convertir un Mercurial repo dans un repo Git.

C'est l'un des plus stupide des séquences d'événements que j'ai jamais eu à comprendre, mais je ne suis pas un Python guy à tous.

Mon Départ Environnement

  • Visual Studio 2010/2012
  • TortoiseHg 2.8.2; Comprend Mercurial 2.6.3 & Python 2.7.3
  • Git 1.8.3

Les erreurs que j'ai Obtenu le Long de la Manière

  • Ne pouvait pas trouver Phython
  • Ne pouvait pas trouver Mercuial module dans Phython
  • Easy_Install n'existe pas
  • Ne pouvait pas compiler Mercurial module

Ce Que J'Ai Fait

  • A installer Python27 autonomehttp://www.python.org/)
  • Assurez-vous de mettre le chemin dans Chemin dans les Variables d'Environnement
  • A installer Easy_Install (http://sourceforge.net/projects/pywin32/files/)
  • Assurez-vous que les Scripts Python chemin est aussi dans les Variables d'Environnement
  • Et obtenir ceci... A dû aller à MSDN et télécharger la version complète de Visual Studio 2008 et n'installer que le C++ avec le 64 bits option est activée (donc Easy_Install pourrait compiler Mercurial module Python), mais je ne pouvais pas le faire fonctionner avec la version Express edition, car impossible de trouver le 64 bits.

Étapes

  • Dans la Console de Commande (après, tout est installé)
    • C:\easy_install mercurial

(Si vous avez installé tout ce que vous devriez le voir télécharger et compiler l'Mercurial module)

  • Dans Git Console
    • Suivez les étapes par @mauvis-ledford et @benno (Merci les gars!!!)

9voto

bolinfest Points 1833

Voici un exemple simple de comment exporter votre clone local de Mercurial repo de GitHub.

Tout d'abord, ajoutez l' hggit extension de votre ~/.hgrc le fichier si vous ne l'avez pas déjà fait:

[extensions]
hggit =

Ensuite, exécutez les commandes suivantes à partir de la racine de votre dépôt Mercurial:

hg bookmark -r default master
hg push -f git+ssh://git@github.com/bolinfest/plovr.git

Personnellement, j'ai eu de spécifier -f lors de l'exécution d' hg push, bien que je soupçonne que c'est parce que j'avais un peu compliqué branches dans mon Mercurial repo. Vous ne pouvez pas trouver le nécessaire pour votre migration.

Assurez-vous que vous avez l' git+ssh: URI de votre dépôt GitHub plutôt que de l' git: URI. (L' git+ssh: URI est un peu plus difficile à trouver dans le nouveau GitHub de l'INTERFACE utilisateur.)

Selon la taille de votre pension, l'exécution d' hg push peut prendre un certain temps, donc soyez patient. Lorsque vous avez terminé, vous devriez être en mesure de voir votre projet sur GitHub. Dans cet exemple, mon projet est disponible à l' https://github.com/bolinfest/plovr.

Comme vous pouvez vous attendre, maintenant, n'importe qui peut cloner votre dépôt GitHub comme suit:

git clone git@github.com:bolinfest/plovr.git

7voto

Piper Points 121

Voici tous les morceaux mis en place pour une migration sur Windows.

Conditions préalables

  • Git
  • Mercurial ou TortoiseHg
  • Python 2.7 (3.x ne fonctionnera pas)

Lors de l'installation, permettre la liaison à .sh fichiers.
S'assurer que tous les outils sont disponibles dans la variable d'environnement PATH.

La Migration

  1. Ouvert cmd.exe
  2. mkdir c:\git_work
  3. cd c:\git_work
  4. git clone http://repo.or.cz/r/fast-export.git
    Cela crée un dossier: c:\git_work\fast-export\
  5. Maintenant, vous devez mercurial libs pour python. Soit les obtenir à partir d' ici ou d' exécuter les étapes suivantes.
    Modifier c:\git_work\fast-export\hg-fast-export.py:

    import sys # move this line up here
    # Add a new line that imports [mercurial libraries][2] from this zip:
    sys.path.append(r'C:\Program Files\TortoiseHg\library.zip')
    # ...above the old line:
    from mercurial import node
    
  6. mkdir MyNewGitRepo

  7. Copier le contenu de fast-export de MyNewGitRepo, de l'ignorer .git*
  8. hg-fast-import.sh -r c:\Path\To\MyOldHgRepo
  9. Si cela échoue avec le message "Erreur: référentiel a au moins une tête sans nom..." appel de la dernière ligne avec le paramètre: --force
  10. Supprimer les scripts de migration:

    git clean -n # see what would happen
    git clean -f # delete migration files
    
  11. Restaurer les fichiers manquants par la réinitialisation de l'index et de l'arbre de travail.

    git reset --hard
    

7voto

À compter d'aujourd'hui, git distribution comprend un outil pour convertir mercurial dépôts git, hg-à-git. Si vous avez une récente version git installé, il est là. Très bien fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X