2012-09-23 3 views
2

Я хочу перейти от Google Code и Mercurial к Git и GitHub, сохраняя все ветви и историю версий.Миграция Mercurial в GitHub

До сих пор кажется, что плагин Hg-Git mercurial (http://hg-git.github.com/) является моим единственным вариантом. Я попытался следовать инструкциям по установке, но чуть ли не над головой. Вот где я:

[extensions] 
hgext.bookmarks = 
hggit = 

Сейчас, когда я запускаю:

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

я получаю следующее:

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 

, а затем кучу ошибок, которые выглядят следующим образом:

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 

Не уверен, что попробовать следующий. Я также пробовал следующие советы от Cloning github repo with hggit, но мне не хватает чего-то очевидного. Любая помощь будет принята с благодарностью.

+1

Вы посмотрели: [Преобразование репозитория Mercurial (hg) в Git на Windows (7)] (http://stackoverflow.com/questions/3267232/converting-a-mercurial-hg-repository-to -git-на-Windows-7)? –

+1

Я помню, что я использовал Tailor (http://progetti.metapensiero.it/tailor) для некоторых преобразований репозитория. – liori

ответ

2

проект Просто и некоторые примечания & мысли:

  • Для того, чтобы использовать TortoiseHG (на Windows, XP SP3, если это имеет значение) Python не является обязательным - Я работаю с THG без Python/Setuptools/пип
  • TortoiseHG (32bit или 64bit) от Bitbucket самодостаточны Mercurial в мире Windows-
  • Я добавил расширение HG-GIT к моему TortoiseHG вручную
    • клонировали HG-мерзавец из bitbucket repo в локальной директории

\ TortoiseHg \ Plugins> реж/B

HG-мерзавец

...

  • добавлено расширение hg-git для global mercurial.ini (Documents and Settings \ Badger \ Mercurial.ini)

[Расширения]

...

hggit = C: \ Program Files_Tools \ TortoiseHg \ Plugins \ hggit \ hggit

...

  • расширение

    закладки, как расширение по умолчанию, в комплекте с THG, был включен в GUI несколько версий назад и можно найти в mercurial.ini теперь как bookmarks = без соответствующего флажка в настройках-расширениях

  • С функциональным hg-git в TortoiseHG (клон, вытягивание, гной ч без ошибок для некоторых Git-репо) вы можете попытаться преобразовать внешний Mercurial репозиторий для внешнего Git репо

    • клон CG Mercurial репозиторий для локального (Mercurial) репо
    • создать новый пустой Git репо на Github (проверьте аутентификацию и другие возможные проблемы)
    • добавить второе удаленное репо (GUI - вкладка «Синхронизация», вручную - новая строка в разделе [paths] в репозитории .hg \ hgrc), только для меня git+ssh://[email protected]/username/reponame.git URL (с аутентификацией на основе ключей через PageAnt) является прозрачным решением
    • push local re ро в GitHub
    • Веселитесь

Скриншот просто пример моего активного Git репо на GitHub и попытаться проиллюстрировать мои слова, живого источника

Fiver Repo

+0

Спасибо @Badger за подробности. Во-первых, «hgsubversion» в mercurial.ini, я предполагаю, что вы имеете в виду «hggit». Теперь я немного дальше. Когда я набираю «% hg help hggit» в THG, я получаю «расширение hggit - без текста справки». Поэтому я предполагаю, что расширение является хорошим. Но когда я пытаюсь клонировать из github, я получаю «No module named gitrepo». Есть идеи? –

+1

@LeeRichardson - 1. да, hgsubversion была моей опечаткой - я удалил неправильную строку из копии и патча. 2. hggit ** очень базовая ** помощь может быть достигнута (сюрприз !!!) 'hg help git' 3. Перед игрой github (и не клонировать, я всегда использую * только pull | push * pair), проверьте работу hg-git на каком-то другом репо –

+0

@Badger Работал над этим в течение нескольких дней без везения. Теперь я могу клонировать и просто поправлять (устаревшая THG вызывала проблемы). Однако толчок не работает. Когда я пытаюсь нажать github («hg push git + ssh: //[email protected]/lprichar/SirenOfShame.git»), я получаю «abort: дескриптор недействителен». Я получаю то же самое, когда вы нажимаете на локальный репозиторий git. Должен ли я включать add dulwich в THG каким-то образом? Нужно ли настраивать TortoiseHg для использования TortoisePlink.exe для ssh? Большое вам спасибо за вашу помощь. –

0

я изо всех сил с hg-git. Я придумал странное решение.

Я импортировал hg repo с https://import.github.com/new Это не странно и должно быть то, что вы ищете.


Странная и бонусный раздел ниже:

  • Я создал зеркало репо рт.ст. на http://bitbucket.org
  • Я создал локальный репозиторий внутри хранилища рт.ст. мерзавца.
  • Я добавил к моим .hg/.gitignore
  • Добавить .hg/ и .git/ в файл .gitignore .git/ .hg/
  • Введите каталог .hg в местном репо и симлинку файла .gitignore как .hgignore с

    $ перли -s. ./.gitignore .hgignore

  • Теперь любые изменения, внесенные в ваш .gitignore также относятся к hg

    $ git add.gitignore -am 'gitignore'

    $ рт.ст. добавить .gitignore -am 'Не забудьте симлинку .gitignore в .hgignore в .hg/папке'

    $ мерзавец толчок происхождение

    $ рт.ст. толчок по умолчанию мастер

Заключение: Хотя это выглядит неэффективно, он принимает преимущества GitHub, а не проигрышные рт.ст. репо и базу данных и дает возможность использовать как git и hg

Смежные вопросы