Я прошел через нечто подобное в одном из моих преобразований svn -> hg.Если вас не беспокоит то, что было в этой ревизии, вы, вероятно, можете выполнить преобразование в три этапа:
1) Дважды выгрузите SVN-репозиторий, используя svnadmin dump
, пропуская неправильную ревизию
svnadmin dump -r1:21227 /var/svn/repo/foo > foo-svn-1.dump
svnadmin dump -r21229:X /var/svn/repo/foo > foo-svn-2.dump
и перезагрузите их в новые временные репозитории SVN.
svnadmin create ./foo-svn-1
svnadmin load ./foo-svn-1 ./foo-svn-1.dump
svnadmin create ./foo-svn-2
svnadmin load ./foo-svn-2 ./foo-svn-2.dump
2) Преобразуйте два временных репозитория в два репозитория hg, используя hg convert
hg convert ./foo-svn-1 foo-hg-1
hg convert ./foo-svn-2 foo-hg-2
, и вытяните всенаборы изменений из второго в первый репозиторий (используя hg pull -f
для принудительного импорта несвязанных наборов изменений).
cd ./foo-hg-1
hg pull -f ../foo-hg-2
После этого у вас будет один репо с перерывом в истории ревизий, где вы разбилиsvn repo.
3) Соедините два дерева вместе с расширением hg rebase
, как описано в Объединение разрывов в временной шкале хранилища Mercurial