Конвертировать git репо в ртутный репо - PullRequest
1 голос
/ 11 февраля 2012

Я работал над git-репозиторием, и теперь мне нужно по какой-то причине преобразовать его в hg-репозиторий.Мой оригинальный git-репозиторий имеет 41 коммит и имеет размер 320 МБ.

Я пытаюсь конвертировать репозиторий, используя hg convert git-repo hg-repo.Эта команда начинает преобразование репозитория git в hg, но зависает (не останавливается) на полпути в версии 18. Я проверил, что размер репозитория hg в это время составлял 50 МБ.Я знаю, что рев нет.18 и размер = 15M не так важны, но hg convert не печатает никаких ошибок, которые я могу отладить.

hg печатает ошибку в каком-то неизвестном месте?Влияет ли размер репозитория на программу hg convert?

1 Ответ

1 голос
/ 14 мая 2013

hg convert не был самым простым инструментом для использования в моем опыте, но hg-git всегда работал без нареканий для меня. Поскольку вы упомянули о некоторых проблемах с Git-репозиторием некоторое время назад, вы должны попробовать полную проверку целостности:

git fsck-objects --full

(Я предполагаю, что хранилище является локальным, но если нет, создайте локальный клон и проверьте его там.)

В этом нет необходимости, но вы можете принудительно запустить сборку мусора, прежде чем продолжить:

git gc

и если вы действительно параноик, вы можете проверить это еще раз. Используя hg git (убедитесь, что он установлен и включен в .hgrc), очень легко сделать локальный клон Mercurial:

hg clone path/to/git/repo path/to/hg/repo

(Это может занять некоторое время - вы просматриваете ревизии одну за другой и восстанавливаете их.)

Теперь клон hg будет иметь скрытую копию репозитория git, хранящуюся внутри - вы можете увидеть это, запустив git status из клонированного каталога. Эта скрытая копия не будет передаваться при нажатии или нажатии, поэтому, если вы действительно хотите избавиться от наследия git, вы можете сделать еще один клон:

hg clone path/to/hg/repo path/to/new/repo

Если в какой-то момент вы решите вернуться в git, вы также можете сделать это с помощью скрытого репозитория git из hg-git:

git init path/to/new/git/repo
cd path/to/new/git/repo 
git pull path/to/hg/repo/.hg/git

Если у вас по-прежнему нет гибридного репо, вы можете воссоздать его на месте с помощью hg gexport (часть hg-git) или использовать что-то вроде git-hg или hg / brz-bridge для git . См. Также Совместимость Git с Mercurial Repository .

...