SVN "отсутствует ревизия" при переходе на Mercurial - PullRequest
1 голос
/ 19 мая 2011

Мы пытаемся перейти от Subversion к Mercurial, и мы попали в ловушку. «svnadmin verify» выдает эту ошибку:

svnadmin: нет такой ревизии 21228

Глядя на сервер, в каталоге "revs" нет файла для 21228. Все остальное не повреждено, и текущий заголовок работает отлично (сейчас у нас редакция 63000 или около того).

Нам не очень важна эта ревизия, но мы не хотим потерять историю для 1-21227 при конвертации. Кто-нибудь знает способ заставить SVN игнорировать эту ошибку или каким-то образом восстановить отсутствующий файл?

1 Ответ

3 голосов
/ 19 мая 2011

Я прошел через нечто подобное в одном из моих преобразований 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...