KDE SVN2 GIT "ПРЕДУПРЕЖДЕНИЕ: ветка ... в репозитории ... не существует при ревизии ... - вы возобновили работу с неправильной ревизии?" Не могу продолжить - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь перенести репозиторий SVN размером 11 ГБ с более чем 24 тыс. Ревизий внутри в один репозиторий GIT.

Я сделал дамп одного файла SVN с помощью команды svnrdump и загрузил его на мой локальный сервер SVN, размещенный на моем компьютере MacBook.

Я загрузил svn2 git из репозитория https://github.com/svn-all-fast-export/svn2git.

Из-за различий в способах как SVN и GIT обрабатывают теги, я использовал merged-branch-tags.rules из каталога svn2 git sample, который выглядит следующим образом (я удалил комментарии): создать репозиторий myproject end репозиторий

match /trunk/
  repository myproject
  branch master
end match

match /(branches|tags)/([^/]+)/
  repository myproject
  branch \2
end match

Затем я использовал решение для изображений docker, как описано в документации (в моей консоли это была одна строка. Я разделил ее, чтобы прояснить, что я делал):

docker run --rm -it \
    -v /Users/me/work/SVN/dest:/workdir \
    -v /Users/me/work/svnServer/repositories/my_svn_repo:/tmp/svn \
    -v /Users/me/work/SVN/svn2git/samples:/tmp/conf \
    svn2git /usr/local/svn2git/svn-all-fast-export \
    --rules /tmp/conf/merged-branches-tags.rules \
    --add-metadata --svn-branches --debug-rules --svn-ignore --empty-dirs \
    /tmp/svn/

Во время первой попытки я получил ошибку между ревизиями 12600 и 126001:

Exporting revision 12601     /tags/7.0M0p0000 was copied from /tags rev 12600
rev 12601 /tags/7.0M0p0000/ matched rule: "/tmp/conf/merged-branches-tags.rules:28 /(branches|tags)/([^/]+++++
)/"    exporting.
.WARN: SVN reports a "copy from" @ 12601 from /tags @ 12600 but no matching rules found! Ignoring copy, treating as a modification
WARN: Transaction: "7.0M0p0000" is not a known branch in repository "myproject"
Going to create it automatically
add/change dir ( /tags/7.0M0p0000 -> "7.0M0p0000" "" )
+++++
WARN: Branch "7.0M0p0000" in repository "myproject" doesn't exist at revision 12601 -- did you resume from the wrong revision?
Failed to write to process: Process crashed for repository myproject
 6223345 modifications from SVN /tags/7.0M0p0000/ to myproject/7.0M0p0000%

Я проверил это, и в версии 12601 есть новый тег с именем «7.0M0p0000», который я ' m собираюсь импортировать как ветку и которой не было в репо в версии 12600.

У вас есть идеи, что я могу сделать, чтобы исправить это и продолжить миграцию? Любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 15 июля 2020

После дальнейшего расследования выясняется, что упомянутый тег «7.0M0p0000» был создан в версии 12601 как копия всех тегов из версии 12600.

Я нашел его в дампе. файл, созданный с помощью этой команды:

svnrdump dump -r 12600:12601  --incremental http://xxx.xxx.xxx.xxx/svn/my_repo > my_repo.dump

Была запись:

Revision-number: 12601
...
Node-path: tags/7.0M0p0000
Node-kind: dir
Node-action: add
Node-copyfrom-rev: 12600
Node-copyfrom-path: tags

Кажется, что svn2 git KDE не может справиться с такими случаями (что, вероятно, было сделано по ошибке).

Единственное решение, которое я нашел, было полностью пропустить этот тег, добавив совпадение в мой файл merged-branch-tags.rules (важен порядок совпадений):

match /tags/7.0M0p0000/
  min revision 12600
  max revision 12606
end match
...
match /(branches|tags)/([^/]+)/
  repository myproject
  branch \2
end match
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...