Миграция из 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.

с наилучшими пожеланиями.