2010-04-19 11 views
50

Y at-il un flux de travail efficace pour refléter un projet qui est principalement hébergé sur bitbucket en utilisant Hg, à Github?Reflétant un projet HG de Bitbucket à Github

+0

Voir aussi http://stackoverflow.com/questions/883452/git-interoperability- avec-un-mercurial-référentiel – wimh

Répondre

36

Vous pouvez utiliser un outil comme hg-git à:

  • installer un dépôt Git quelque part que vous avez accès à pousser,
  • puis exécutez hg push [path] à partir de votre projet. Par exemple:
$ cd hg-git # (a Mercurial repository) 
$ hg bookmark -r default master # make a bookmark of master for default, so a ref gets created 
$ hg push git+ssh://[email protected]/schacon/hg-git.git 
$ hg push 

Cela convertira toutes nos données Mercurial en objets Git et poussez-les au serveur Git.
Vous pouvez aussi mettre ce chemin dans la section [paths] de .hg/hgrc puis pousser à par son nom.

hg-git

+0

Merci. J'ai jeté un coup d'œil à hg-git, mais je vois qu'il est encore dans un état alpha. J'ai essayé de l'installer dans cygwin mais j'ai un problème de stabilité avec ça en ce moment. Pourvu que cela fonctionne, cependant, c'est certainement un outil utile dans le flux de travail. – Santa

11

Si vous utilisez Mercurial pour un projet, vous pouvez rapidement et facilement un miroir git de votre projet afin que les utilisateurs peuvent contribuer git. J'ai créé un tutoriel sur l'utilisation de hg-git pour gérer les miroirs Mercurial sur GitHub.

Il couvre comment démarrer avec un compte GitHub, comment faire passer un projet de Mercurial à GitHub, et comment accepter des contributions (demandes de pull) de GitHub. Voici un lien vers l'article du blog: http://hgtip.com/tips/advanced/2009-11-09-create-a-git-mirror/

6

Depuis juillet 2013, il existe BitSyncHub un service Web pour automatiser ce processus via un hook BitBucket post-réception. Vous devrez accorder le service autorisation d'écriture à votre dépôt GitHub bien (ajouter bitsynchub en tant que contributeur).

8

Ajouter git-remote-hg à votre chemin bin. Alors vous pouvez refléter comme mentioned on github.

git clone --mirror hg::https://bitbucket_repo 

puis, allez dans votre repo

git remote set-url --push origin https://github.com/exampleuser/mirrored 

cloné enfin, synchroniser votre miroir

git fetch -p origin 
git push --mirror 
+1

C'est beaucoup mieux que la réponse acceptée car le résultat sera un vrai miroir avec tous les tags et branches. – Kentzo