Миграция из Git в SVN
у меня есть проект, который требует порта репозитория Git в SVN. Я пробовал несколько способов, размещенных в интернете, но ни один из них не работает для меня. Если кто-то может помочь, это будет действительно оценено.
я последовал за гидом по
- клонирование репозитория Git в рабочую копию
- входим в копию
- перемотка головки на первую фиксацию
- выбрать все коммиты
- делаешь
git svn rebase
иgit svn dcommit
проблема этого метода заключается в том, что мой репозиторий Git имеет сложную историю. Существует множество ответвлений и слияний. Когда я сделал cherry pick, он забирает только часть окончательного репозитория.
вопрос: есть ли способ избежать сбора вишни и git svn rebase
?
Может, заменить чем-нибудь другим?
Я следил за этим веб-сообщением:перенесите репозиторий Git на svn
этот пост по существу
- сделал
git svn clone
- получил РЕПО git в клонированной рабочей копии
- разветвил мастера на old_master
- применены все коммиты от old_master к мастеру (
git svn rebase
) - сделал
git dcommit
проблема этого подхода похожа на то, что у меня было в первом:
Когда я сделал git svn rebase
, есть много конфликтов.
Кроме того, когда я пропускаю все конфликты,git dcommit
неудачный.
Он сказал мне: Unable to determine upstream svn information from HEAD history.
Я не могу сказать, что еще можно попробовать с этого момента. Пожалуйста, дайте любые предложения, если вы заметили, что я сделал неправильно или есть другие способы сделать это. Оценил!!
2 ответов
Я полагаю, у вас нет выбора, кроме как потерять часть вашей истории git - SVN просто не может обрабатывать столько информации.
единственный Хак, о котором я думаю, для делегирования проблем третьей стороне, было бы воспользоваться поддержка SVN GitHub чтобы облегчить вашу задачу.
Я бы рекомендовал вам действительно подумать, если вам нужно сохранить свою историю вообще, или насколько она должна быть полной. Исходя из этого, я бы просто раздавил / перебазировал конфликтующие коммиты (или все история в одном коммите) и начать с этого.
пусть вилка будет с вами!
Ну, вы должны взглянуть на этот вопрос. Лучший ответ:
общая проблема с преобразованиями в этом направлении заключается в том, что репозитории Git могут содержать больше, чем просто линейную историю ревизий, как и следовало ожидать Subversion. Возможны несколько предков с расходящимися историями и частыми коммитами слияния, которые не могут быть легко представлены в репозитории Subversion.
для простых случаев, когда у вас есть линейная история в репозитории Git вы можете использовать git-svn dcommit, чтобы переместить лот в пустой репозиторий Subversion.
с наилучшими пожеланиями.