Неполные истории коммитов svn с git svn - PullRequest
0 голосов
/ 23 апреля 2019

Мы переносим ветку svn в git.

Нам не удалось получить полную историю коммитов из svn в git repo, и нам нужна помощь для правильного получения полной истории.

git svn clone не работает для нас, потому что он продолжает работать с

"предупреждение: слишком много недостижимых незакрепленных предметов; запустите 'git prune', чтобы удалить их."

В нашем репо около 250000 коммитов

У нас есть корневой URL репо на https://abc.xyz.com/svn/app1

У нас есть ветка А, содержащая папки (URL: https://abc.xyz.com/svn/app1/proj1/A/trunk)

ф

1019 * ЦСИ *

JRP

У нас создана ветка B (из ветви A на r12000), содержащая папки (url: https://abc.xyz.com/svn/app1/path/to/proj2/B/trunk)

ф

1028 * ЦСИ *

JRP

Мы хотим перенести ветку svn B в git в качестве нашего транка в git

Используем нестандартную компоновку SVN

Мы используем git-svn версии 2.18.0 (svn 1.7.14)

Мы не используем svn2git

Что мы делаем не так?

1-й пробег

Мы пытались

cd svngitTrunkrepo
git config gc.pruneExpire now
git config gc.auto 1
git svn init  https://abc.xyz.com/svn/app1 -T path/to/proj2/B/trunk --prefix svn/ svngitTrunkrepo
git svn fetch

error: invalid object 100644 xxxyyyzzz111222333444555666 for 'src/to/file.java'
fatal: git-write-tree: error building trees
write-tree: command returned error: 128

2й пробег

Мы пытались

cd svngitTrunkrepo2
git config gc.pruneExpire now
git config gc.worktreePruneExpire now
git config gc.reflogExpire now
git config gc.reflogExpireUnreachable now
git config gc.auto 1
git svn init https://abc.xyz.com/svn/app1 -T path/to/proj2/B/trunk --prefix svn/ svngitTrunkrepo2
git svn fetch -r 1:50000
git gc --aggressive
git svn fetch -r 50000:66813
git gc --aggressive
git svn fetch -r 66813:76813
git gc --aggressive
(continue)
git svn fetch -r 216813:220000
git gc --aggressive

Вывод прогона показывает

(continue)
r218237 = b9e6e8ee272fdaa2611f6c3e9ccc05d412ecdf48 (refs/remotes/svn/trunk@218238)
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
Found branch parent: (refs/remotes/svn/trunk) b9e6e8ee272fdaa2611f6c3e9ccc05d412ecdf48
Following parent with do_switch
Successfully followed parent
r218239 = d4af17ac206cb4650f1aa0490dfdb4e1c00a5c16 (refs/remotes/svn/trunk)
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
Checking out files: 100% (63293/63293), done.
Checked out HEAD:
  https://abc.xyz.com/svn/app1/path/to/proj2/B/trunk r218239
fatal: gc is already running on machine 'ppplwxzdw' pid 21345 (use --force if not)

Затем мы проверяем историю коммитов

svngitTrunkrepo2]# git log -v

но мы увидели только 29 изменений, в отличие от ожидаемых изменений 198312

1 Ответ

0 голосов
/ 25 апреля 2019

Сообщение

fatal: gc is already running on machine 'slc15zdw' pid 21345 (use --force if not)

означает, что git gc пытается начать дважды. В то же время у вас есть довольно странные настройки для git gc - особенно git config gc.auto 1 означает, что для каждого свободного объекта git gc будет пытаться запустить. Что хорошо вписывается в вышеприведенное сообщение fatal.

Попробуйте запустить git svn без параметров gc.* - думаю, они принесут больше вреда, чем пользы.

...