У меня был большой успех с git-hg
из https://github.com/cosmin/git-hg (также требуется рабочая установка hg
). Он поддерживает выборку, извлечение и push и является более стабильным для меня, чем hg-git
(аналогичные функции от hg
до git).
См. https://github.com/cosmin/git-hg#usage для примеров использования. Пользовательский интерфейс очень похож на git-svn
.
git-hg
требует дополнительного дискового пространства для каждого клонированного репозитория hg. Реализация использует полный ртутный клон, дополнительный клон git и реальное репозиторий git. Требуемое дисковое пространство примерно в 3 раза больше обычного использования GIT. Дополнительные копии хранятся в каталоге .git
вашего рабочего каталога (или в месте, указанном GIT_DIR
как обычно).
Примечание: Основная проблема, которую пытается решить git-hg
, заключается в том, что между функциями git
и hg
нет сопоставления 1: 1. Самая большая проблема - это несоответствие импеданса между ветвями git и hg неназванными ветвями и hg именованными ветвями и hg закладками (все они очень похожи на ветви для git
пользователей). Связанная проблема заключается в том, что hg
пытается сохранить исходное имя именованной ветви в истории версий, в отличие от git, где имя ветви добавляется только в сообщение фиксации шаблона по умолчанию.
Любой инструмент, который утверждает, что создает совместимый мост между git
и hg
, должен объяснить, как он будет работать с этим согласованием импедансов. Затем вы можете решить, соответствует ли выбранное решение вашим потребностям.
Решение, которое использует git-hg
, заключается в отбрасывании всех закладок hg и преобразовании именованных веток в ветви git. Кроме того, он устанавливает основную ветку git на неназванную ветвь hg по умолчанию.