Quelques notes sur mon expérience de conversion de Mercurial à Git.
1. hg-fast-export
L'utilisation de hg-fast-export a échoué et j'avais besoin de --force comme indiqué ci-dessus. Ensuite, j'ai eu cette erreur :
error : cannot lock ref 'refs/heads/stable' : 'refs/heads/stable/sub-branch-name' existe ; impossible de créer 'refs/heads/stable'.
Une fois l'exportation hg-fast terminée, je me suis retrouvé avec un repo amputé. Je pense que ce repo avait un bon nombre de branches orphelines et que hg-fast-export a besoin d'un repo quelque peu idéalisé. Tout cela me semblait un peu rude sur les bords, alors je suis passé à Kiln Harmony ( http://blog.fogcreek.com/announcing-kiln-harmony-the-future-of-dvcs/ )
2. Four
Kiln Harmony ne semble pas exister sur un compte de niveau gratuit comme suggéré ci-dessus. Je pouvais choisir entre les dépôts Git-only et Mercurial-only et il n'y a pas d'option pour changer. J'ai créé un ticket de support et je partagerai le résultat s'ils répondent.
3. hg-git
Le plugin mercuriel Hg-Git ( http://hg-git.github.io/ ) a fonctionné pour moi. Pour info, sur Mac OSX, j'ai installé hg-git via macports comme suit :
- sudo port install python27
- sudo port select --set python python27
- sudo port install py27-hggit
- vi ~/.hgrc
.hgrc a besoin de ces lignes :
[ui]
username = Name Surname <me@mydomain.com>
[extensions]
hgext.bookmarks =
hggit =
J'ai ensuite eu du succès avec :
hg push git+ssh://git@bitbucket.org:myaccount/myrepo.git
4. Avertissement : connaissez votre dépôt
Tout ce qui précède est un instrument brutal et j'ai seulement poussé en avant parce que cela a pris assez de temps pour que l'équipe utilise git correctement.
Lors de la première poussée du projet par (3), je me suis retrouvé avec toutes les nouvelles modifications manquantes. Ceci est dû au fait que cette ligne de code doit être considérée comme un guide seulement :
$ hg bookmark -r default master # make a bookmark of master for default, so a ref gets created
La théorie est que la branche par défaut peut être considérée comme master lorsqu'elle est poussée vers git, et dans mon cas, j'ai hérité d'un repo où ils utilisaient 'stable' comme l'équivalent de master. De plus, j'ai également découvert que l'extrémité du dépôt était un correctif qui n'avait pas encore été fusionné avec la branche "stable".
Si vous ne comprenez pas correctement Mercurial et le repo à convertir, il est probablement préférable de ne pas effectuer la conversion.
J'ai fait ce qui suit afin de préparer le dépôt pour une deuxième tentative de conversion :
hg update -C stable
hg merge stable/hotfix-feature
hg ci -m "Merge with stable branch"
hg push git+ssh://git@bitbucket.org:myaccount/myrepo.git
Après cela, j'avais un projet équivalent vérifiable dans git, mais toutes les branches orphelines que j'ai mentionnées plus tôt ont disparu. Je ne pense pas que ce soit trop grave, mais je pourrais bien vivre en regrettant cet oubli. C'est pourquoi ma dernière pensée est de garder l'original de toute façon.
Edit : Si vous voulez juste le dernier commit dans git, c'est plus simple que la fusion ci-dessus :
hg book -r tip master
hg push git+ssh://git@bitbucket.org:myaccount/myrepo.git
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
3 votes
@Ian et les autres. Il ne s'agit pas d'une question en double, l'autre question concerne la migration d'un dossier spécifique, celle-ci concerne le répertoire entier. Bien que les réponses à cette question aient été postées à cette question, il s'agit d'une question différente. Elle doit être marquée comme une question connexe.
0 votes
Comme l'a dit Simineer, c'est no un duplicata. Cependant, toutes les réponses à cette autre question ignorent le fait que l'auteur de la question ne veut qu'un seul fichier. este question à la place. La meilleure réponse, et de loin, est celui-ci .
0 votes
git-remote-hg
: stackoverflow.com/questions/883452/4 votes
Pour des raisons de référence, Kiln Harmony a été abandonné.