Экспортировать репозиторий git в svn

клонирование репозитория svn в git легко с git -svn. Однако мне нужно сделать это наоборот. У меня есть хранилище git, лежащее вокруг, и вы хотите импортировать его в пустую (за исключением папки с соединительными линиями, ветками и тегами), сохраняя всю информацию о фиксации.

I cerate a git -svn-clone svn repo, вытащил мастер git и dcommitted. Однако единственное, что у меня есть в svn, - это сообщение, "слитое из git"

Я также пробовал по-другому: клонировал репозиторию git и вызвал git svn init, но git продолжает говорить "Невозможно определить информацию SVN вверх по потоку из истории HEAD".

Возможно ли создать репозиторий svn из git?

Cheers, Майкл

Ответы

Ответ 1

когда вытаскивание главной ветки из другого репо git создает слияние, потому что нет общей истории.

вы должны использовать git pull --rebase (который изменит идентификаторы фиксации, поскольку он воссоздает коммиты), а затем dcommit


вы также можете попробовать следующее:

проверите начальную версию с помощью svn (просто создайте те ветки, теги, папки для внешних линий и совершите транзакцию), затем создайте git svn clone (git svn -s clone svn://…)

затем выполните следующие команды:

# create a ref to your "svn" commit
git checkout -b svn
# get all your "git" commits
git fetch $your_remote_git_repo
# create a ref to your "git" commit
git branch master FETCH_HEAD
# rebase the rest your git commits
git rebase svn master
# commit to svn!
git svn dcommit

edit Выбор вишни был необходим только потому, что в моем быстро настроенном хранилище git были только пустые коммиты

Ответ 2

Вот мой рецепт публикации репозитория git через svn:

svn mkdir --parents http://host/path/to/repo/{trunk,tags,branches} \
    -m "Standard layout for $project"
git svn init -s http://host/path/to/repo/
git svn fetch
git rebase trunk master
git svn dcommit

Subversion не будет сохранять время фиксации или авторство. Бог поможет вам, если вы использовали ветки.