Преобразование репозитория Mercurial (hg) в Git в Windows (7)

Я действительно очень расстроен на этом этапе. У меня есть существующий репозиторий hg, в котором есть месяцы истории кодирования, и я хочу перенести это в частный репозиторий Github, чтобы я мог работать над этим оттуда. К сожалению, я использую Windows, и я не могу найти какой-либо способ преобразовать репозиторий, который я действительно могу заставить работать должным образом. Практически каждая помощь и совет, которые я могу найти в Интернете, похоже, предполагает, что я использую какую-то оболочку * nix, которой я не являюсь.

В настоящее время я установил: TortoiseHG, Python 3.1 и Git для Windows.

Что я пробовал:

  1. Плагин hg-init для hg - Когда я пытаюсь использовать команду gexport (и другие из hg-git), я просто получаю строки исключений python. Я совершенно не могу заставить Git даже узнать команду gremote. Я попытался следовать тому, что было здесь: http://github.com/blog/439-hg-git-mercurial-plugin

  2. hg-to-git (быстрый экспорт) - все учебники ожидают от меня запуска файла.sh. Другой поток stackru, казалось, подразумевал, что Powershell может запускать файлы.sh, но я не могу заставить его запускать их на всю жизнь. Пример: http://hivelogic.com/articles/converting-from-mercurial-to-git

  3. Конвертер Mercurial в git - http://permalink.gmane.org/gmane.comp.version-control.git/36601 - Этот не хочет работать, когда я запускаю его через Python, который жалуется на синтаксическую ошибку на линии 44. Я не знаю Python, поэтому я понятия не имею.

Четыре часа поиска в Google и пробежки по бесполезным учебникам, и люди, которым повезло больше, чем я, поют похвалы каждому якобы полезному сообщению в блоге, но я никуда не попал с этим. Может ли кто-нибудь предложить какую-либо помощь или предложения для меня, чтобы попробовать?

6 ответов

Решение
  1. Установите Cygwin (с python, hg, git)
  2. Установите git-hg
  3. бежать git-hg clone ...url...

Или скажите мне, что URL для этого вашего репозитория HG, и я могу преобразовать его для вас.

Существует много противоречивой информации о том, как конвертировать репозитории Mercurial в Git в Windows. Это действительно довольно просто и требует только TortoiseHg и Git для установки.

подготовка

Включите hg-git, добавив в свой конфигурационный файл Mercurial следующее (% Userprofile% \ mercurial.ini):

[extensions]
hggit = 
hgext.bookmarks =

[git]
intree = True

преобразование

Перейдите в каталог репозитория (который содержит подкаталог .hg) в командной строке и выполните следующие команды:

hg bookmark -r default master
hg gexport --debug
git config --bool core.bare false
git reset HEAD -- .

Дополнительная информация

Вы можете найти подробное описание этих шагов в моей статье в блоге на эту тему.

Рассматривали ли вы установку msysgit? Оболочка git bash, которую она дает, должна иметь возможность запускать файлы.sh.

Все, что я читал об этих конвертерах Hg для Git, указывает на одну очевидную ошибку, которую вы допустили: использование Python 3!

Те ошибки Python, которые вы получаете, происходят из-за таких скриптов, как hg-git и fast-export, созданных с использованием Python 2.6. Python 3 обрабатывает "печать" по-разному, поэтому ваши ошибки.

Перепишите сценарии для работы с вашей версией или установите Python 2.6.

Не забудьте добавить его в настройку PATH. То же самое относится и к установке msysGit. Убедитесь, что вы выбрали вторую опцию при установке, чтобы добавить Git на свой путь.

Вам также нужен Mercurial For Python, доступный в проекте TortoiseHG thg-winbuild:

https://bitbucket.org/tortoisehg/thg-winbuild/downloads

Файл будет называться "mercurial-2.2.2.win-amd64-py2.6.exe" для 64-битной Windows и "mercurial-2.2.2.win32-py2.6.exe" для 32-битной. Пока вы в этом, получите на всякий случай сопутствующий установщик Mercurial 2.2.2.

Хотя вы заявили, что не хотите устанавливать еще одно программное обеспечение VCS, для использования любого из этих преобразователей Hg также необходимо установить Mercurial.

Еще одна ловушка, на которую стоит обратить внимание: эти конвертеры могут не работать с последними версиями Mercurial. Возможно, вам придется немного поэкспериментировать со старыми выпусками, чтобы найти тот, который хорошо работает со сценариями.

Обязательно внимательно прочитайте руководства и файлы Readme для любого конвертера, который вы решите использовать. Кажется, что многие твои печали и неприятности связаны с тем, что ты с нетерпением прыгнул в глубокий конец только после просмотра документации.

Доступны патчи, которые добавляют поддержку Mercurial к Git и msysGit, но вам нужно уметь исправлять и компилировать из исходного кода, если вы хотите следовать по этому пути.

Это может показаться глупым (или решением для отчаявшихся...), но я думаю, что Bazaar имеет хорошую поддержку для репозиториев Hg и Git, и он хорошо работает в Windows.
Так что, если ничего не помогает, возможно, вы можете использовать bzr-hg и bzr-git, чтобы сделать преобразование...

Если оригинальное репозиторий Mercurial доступно в Интернете, и если вы не против использовать GitHub для этого, конвертировать Mercurial в Git теперь тривиально легко:

  1. Войдите в GitHub.
  2. Нажмите на + в правом верхнем углу.
  3. Выбрать Import repository,
  4. Укажите URL-адрес хранилища Mercurial, имя для него под своей учетной записью и укажите, будет ли он общедоступным или закрытым.
  5. Нажмите Begin import и ждать.

Вам даже не нужно оставаться на странице после этого. Через некоторое время GitHub уведомит вас по электронной почте о завершении импорта.

Другие вопросы по тегам