Svn для мерзости миграции обработки больших репозиториев
Я работаю над миграцией svn-репозитория в git (gerrit), и у меня возникают проблемы с миграцией большого репозитория. Я использую svn2git.
фатальный: неправильный указатель инфо 10
ошибка: git-svn умер от сигнала 11
xxxxxx @ svn2git-import: ~ $ Сброс соединения с помощью XX.XXX.XX.XX
Я добавил --log-window-size в svn2git, который установлен на 100000.
Спасибо за помощь заранее!
2 ответа
Я решил проблему, добавив еще 0 в размер окна журнала. Дурак я.
Просто отредактируйте svn2git -> /var/lib/gems/2.3.0/gems/svn2git-2.4.0/lib/svn2git/migration.rb
добавлять
--log - размер окна 9999999999999
в
git svn fetch
решил мою проблему!
Для одноразовой миграции git-svn
не является правильным инструментом для преобразования хранилищ или частей хранилища. Это отличный инструмент, если вы хотите использовать Git в качестве внешнего интерфейса для существующего сервера SVN, но для одноразовых преобразований не следует использовать git-svn
, но svn2git
который гораздо больше подходит для этого варианта использования.
Есть много инструментов, называемых svn2git
Вероятно, лучшим из них является KDE из https://github.com/svn-all-fast-export/svn2git. Я настоятельно рекомендую использовать это svn2git
инструмент. Это лучшее, что я знаю из доступных, и оно очень гибкое в том, что вы можете делать с его файлами правил.
svn2git
инструмент, который вы использовали (вероятно, nirvdrums) основан на git-svn
и как таковой страдает от большинства одних и тех же недостатков, просто обходя некоторые из них.
Вы легко сможете настроить svn2git
Файл правил, позволяющий получить желаемый результат из текущей компоновки SVN, включая любые сложные истории, подобные вашей, которые могут существовать, включая создание нескольких репозиториев Git из одного репозитория SVN или чистое объединение различных репозиториев SVN в одно репозиторий Git за один прогон, если вы лайк.
Если вы не на 100% об истории вашего хранилища, svneverever
http://blog.hartwork.org/?p=763 - отличный инструмент для изучения истории SVN-репозитория при его миграции на Git.
Даже если git-svn
или нирвдрум svn2git
легче начать, вот еще несколько причин, по которым использование KDE svn2git
вместо git-svn
превосходит, помимо своей гибкости:
- история перестраивается намного лучше и чище
svn2git
(если используется правильный), это особенно актуально для более сложных историй с ветвями и слияниями и т. д. - теги являются реальными тегами, а не ветвями в Git
- с
git-svn
теги содержат дополнительный пустой коммит, который также делает их не частью ветвей, поэтому нормальныйfetch
не получите их, пока вы не дадите--tags
к команде, так как по умолчанию выбираются только теги, указывающие на извлеченные ветви. С правильными тегами svn2git, где они принадлежат - если вы изменили макет в SVN, вы можете легко настроить это с
svn2git
, сgit-svn
вы потеряете историю в конце концов - с
svn2git
Вы также можете легко разделить один SVN-репозиторий на несколько Git-репозиториев. - или легко объединить несколько репозиториев SVN в одном корне SVN в один репозиторий Git
- преобразование в миллиард раз быстрее с правильным
svn2git
чем сgit-svn
Видите ли, есть много причин, почему git-svn
хуже и кде svn2git
выше.:-)