Экспортировать репозиторий 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 не будет сохранять время фиксации или авторство.
Бог поможет вам, если вы использовали ветки.