292 votes

Convertir un projet Mercurial en Git

J'ai besoin de convertir un projet mercurial en projet git, mais je voudrais garder l'historique des commit intact. Ma solution actuelle consistait à supprimer les fichiers liés à hg, puis à git init && ajouter manuellement les fichiers dont j'avais besoin, mais cela ne permettait pas de conserver l'historique. Existe-t-il des solutions à ce problème ?

1 votes

Un utilitaire git-hg pour extraire et suivre un repo mercuriel. github.com/offbytwo/git-hg

2 votes

Vous pouvez également essayer Harmonie du four qui conserve à la fois une version git et mercuriale d'un repo et synchronise tout, de sorte qu'il est utilisable à partir des deux.

2 votes

Une meilleure approche github.com/buchuki/gitifyhg

10voto

Reck Hou Points 981

De :

http://hivelogic.com/articles/converting-from-mercurial-to-git

Migration de

C'est un processus relativement simple. Tout d'abord, nous téléchargeons fast-export (la meilleure façon est via son dépôt Git, que je vais cloner directement sur le bureau), puis nous créons un nouveau dépôt git, effectuons la migration et vérifions le HEAD. En ligne de commande, ça se passe comme ça :

cd ~/Desktop
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/Desktop/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo
git checkout HEAD

Vous devriez voir une longue liste de commits défiler au fur et à mesure que votre projet est migré après l'exécution de fast-export. Si vous voyez des erreurs, elles sont probablement liées à un chemin Python mal spécifié (voir la note ci-dessus et personnaliser pour votre système).

C'est ça, tu as fini.

2 votes

Cela a fonctionné pour moi, mais j'ai dû ajouter une étape. fast-export n'était pas disponible pour toutes les versions de Mercurial, sauf les plus récentes (il n'était pas disponible via apt), donc vous devez soit installer manuellement une nouvelle version de Mercurial >4.6, soit rétrograder fast-export en ajoutant un fichier de configuration. git checkout 19aa906 comme une nouvelle étape 3 ci-dessus pour arriver au dernier commit qui a fonctionné.

7voto

Ry4an Points 56453

Une autre option consiste à créer un compte Kiln gratuit - kiln fait des allers-retours entre git et hg avec une rétention de 100% des métadonnées, vous pouvez donc l'utiliser pour une conversion unique ou l'utiliser pour accéder à un dépôt en utilisant le client que vous préférez.

6 votes

Comment utilisez-vous le four pour la conversion ?

0 votes

Les dépôts Kiln sont utilisables à la fois par git et hg. Vous pouvez donc importer depuis un client, puis exporter depuis l'autre client, autant de fois que vous le souhaitez.

3 votes

Kiln Harmony était très bien tant que ça a duré, mais c'était fermer en septembre 2016. (Et le volet gratuit de Kiln s'arrête le mois prochain).

2voto

Sashah Points 157

Ce serait mieux en tant que commentaire, désolé je n'ai pas les permissions pour commenter.

Le commentaire de @mar10 était la pièce manquante dont j'avais besoin pour faire ça.

Notez que '/path/to/old/mercurial_repo' doit être un chemin sur le système de fichiers (pas une URL), donc vous devez cloner le dépôt original avant. - mar10 Dec 27 '13 at 16:30

Ce commentaire concernait la réponse qui a résolu le problème pour moi, https://stackoverflow.com/a/10710294/2148757 ce qui est la même réponse que celle marquée correcte ici, https://stackoverflow.com/a/16037861/2148757

Cela a déplacé notre projet hg vers git avec l'historique des livraisons intact.

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