2012-09-23 3 views
2

Je souhaite passer de Google Code et Mercurial à Git et GitHub en conservant toutes les branches et l'historique des versions.Migration de Mercurial vers GitHub

Jusqu'à présent, il semble que le plugin Mercurial Hg-Git (http://hg-git.github.com/) est ma seule option. J'ai essayé de suivre les instructions d'installation mais je suis dans un peu au-dessus de ma tête. Voilà où je suis:

[extensions] 
hgext.bookmarks = 
hggit = 

Maintenant, quand je cours:

C:\Python27\Scripts>easy_install.exe hg-git 

Je reçois le texte suivant:

Searching for hg-git 
Best match: hg-git 0.3.3 
Processing hg_git-0.3.3-py2.7.egg 
hg-git 0.3.3 is already the active version in easy-install.pth 

Using c:\python27\lib\site-packages\hg_git-0.3.3-py2.7.egg 
Processing dependencies for hg-git 
Searching for dulwich>=0.8.0 
Reading http://pypi.python.org/simple/dulwich/ 
Reading http://samba.org/~jelmer/dulwich 
Reading http://launchpad.net/dulwich 
Best match: dulwich 0.8.5 
Downloading http://samba.org/~jelmer/dulwich/dulwich-0.8.5.tar.gz 
Processing dulwich-0.8.5.tar.gz 
Running dulwich-0.8.5\setup.py -q bdist_egg --dist-dir c:\users\lee\appdata\local\temp\easy_install-3qgeev\dulwich-0.8.5\egg-dist-tmp-ciyt_4 

Et puis un tas d'erreurs qui ressemblent à ceci:

Traceback (most recent call last): 
    File "C:\Python27\Scripts\easy_install-script.py", line 8, in <module> 
    load_entry_point('setuptools==0.6c11', 'console_scripts', 'easy_install')() 
    File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 1712, in main 
    with_ei_usage(lambda: 
    File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 1700, in with_ei_usage 
    return f() 
    File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 1716, in <lambda> 
    distclass=DistributionWithoutHelpCommands, **kw 
    File "C:\Python27\lib\distutils\core.py", line 152, in setup 
    dist.run_commands() 
    File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands 
    self.run_command(cmd) 
    File "C:\Python27\lib\distutils\dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 211, in run 
    self.easy_install(spec, not self.no_deps) 
    File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 446, in easy_install 
    return self.install_item(spec, dist.location, tmpdir, deps) 
    File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 481, in install_item 
    self.process_distribution(spec, dists[0], deps, "Using") 
    File "C:\Python27\lib\site-packages\setuptools\command\easy_install.py", line 519, in process_distribution 
    [requirement], self.local_index, self.easy_install 
    File "C:\Python27\lib\site-packages\pkg_resources.py", line 563, in resolve 
    dist = best[req.key] = env.best_match(req, self, installer) 
    File "C:\Python27\lib\site-packages\pkg_resources.py", line 799, in best_match 
    return self.obtain(req, installer) # try and download/install 

Je ne sais pas quoi essayer prochain. J'ai également essayé de suivre les conseils de Cloning github repo with hggit mais il me manque quelque chose d'évident. Toute aide serait grandement appréciée.

+1

Avez-vous jeté un œil à: [Conversion d'un référentiel Mercurial (hg) en Git sous Windows (7)] (http://stackoverflow.com/questions/3267232/converting-a-mercurial-hg-repository-to -git-on-windows-7)? –

+1

Je me souviens que j'ai utilisé Tailor (http://progetti.metapensiero.it/tailor) pour certaines conversions de référentiel. – liori

Répondre

2

Tout projet et quelques notes & pensées:

  • Pour utiliser TortoiseHG (sous Windows, XP SP3 si elle importe) Python est pas obligatoire - Je travaille avec THG sans Python/setuptools/pip
  • TortoiseHG (32bit ou 64bit) de Bitbucket sont autonomes Mercurial dans Windows monde
  • j'ai ajouté l'extension hg-git à mon TortoiseHG main

\ TortoiseHg \ plugins> dir/B

hg-git

...

  • a ajouté l'extension hg-git au global mercurial.ini (Documents and Settings \ Badger \ Mercurial.ini)

[extensions]

...

hggit = c: \ Program Files_Tools \ TortoiseHg \ plugins \ hggit \ hggit

...

  • marque-pages extension, comme extension par défaut, livré avec THG, a été activée dans GUI certaines versions il y a et peut être trouvé dans mercurial.ini maintenant comme bookmarks = sans case à cocher correspondante dans les paramètres-Extensions

  • Avec hg-git fonctionnel dans TortoiseHG (clone, pull, pus h sans erreurs pour certains Git-repo) vous pouvez essayer de convertir repo Mercurial externe à git externe

    • clone CG repo Mercurial Repo
    • local (Mercurial) créer un nouveau git vide sur Github (vérifier l'authentification et d'autres questions possibles)
    • ajouter deuxième repo à distance (GUI - onglet "Synchonize", à la main - nouvelle chaîne dans la section [paths] dans repo .hg \ hgrc), pour moi seulement git+ssh://[email protected]/username/reponame.git URL (avec authentification par clé sur PageAnt) est une solution transparente
    • push local re po à GitHub
    • Have Fun

Screenshot est par exemple juste de mon git actif sur GitHub et tenter d'illustrer mes paroles par une source en direct

Fiver Repo

+0

Merci @Badger pour les détails. Premièrement, par 'hgsubversion' dans mercurial.ini, je suppose que vous voulez dire 'hggit'. Maintenant, je suis un peu plus loin. Quand je tape "% hg help hggit" dans THG, je reçois "extension hggit - aucun texte d'aide disponible". Donc je suppose que l'extension est bonne. Mais quand j'essaye de cloner de github je reçois "aucun module nommé gitrepo". Des idées? –

+1

@LeeRichardson - 1. oui, hgsubversion était ma faute de frappe - j'ai supprimé la mauvaise ligne de copier & coller morceau 2. hggit ** très basique ** aide peut être atteint par (surprise !!!) 'hg help git' 3. Avant le jeu github (et pas clone, j'utilise toujours * seulement la paire pull | push *), vérifiez le travail de hg-git sur un autre repo –

+0

@Badger Vous avez travaillé pendant des jours sans succès. Je peux maintenant cloner et tirer très bien (un THG démodé causait des problèmes). La poussée ne fonctionne pas bien. Quand j'essaie de pousser sur github ('hg push git + ssh: //[email protected]/lprichar/SirenOfShame.git') j'obtiens "abandon: le handle est invalide". Je reçois la même chose en poussant à un repo git local. Ai-je besoin d'ajouter add dulwich à THG en quelque sorte? Dois-je configurer TortoiseHg pour utiliser TortoisePlink.exe pour ssh? Je vous remercie beaucoup pour votre aide. –

0

J'ai aussi eu du mal avec hg-git. Je viens avec une solution étrange.

J'ai importé le repo de hg avec https://import.github.com/new Ce n'est pas bizarre et doit être ce que vous recherchez.


L'étrange et la section bonus est ci-dessous:

  • J'ai créé un http://bitbucket.org repo miroir hg sur
  • J'ai créé un dépôt hg local dans git.
  • j'ai ajouté à mon .hg/.gitignore
  • Ajouter .hg/ et .git/ à votre fichier .gitignore .git/ .hg/
  • Entrez le répertoire .hg dans repo local et votre fichier .gitignore faites des liens symboliques comme .hgignore avec

    $ ln -s. ./.gitignore .hgignore

  • Maintenant, toutes les modifications apportées à votre .gitignore sont également considérés par hg

    $ git add.gitignore -Suis 'gitignore'

    $ ajouter hg .gitignore '-Suis Ne pas oublier de créer un lien symbolique .gitignore comme .hgignore dans .hg/dossier'

    $ hg bouton par défaut

    $ git push origin maîtriser

Conclusion: alors qu'il semble inefficace, il faut des avantages de github tout en ne perdant repo et base de données hg et donne la possibilité d'utiliser les deux git et hg