Зеркальное отображение ветки git в репозиторий svn

Я ищу способ настроить существующий репозиторий git (клонированный из центрального репо, размещенного в тайнике Atlassian), чтобы изменения из конкретной ветки синхронизировались с путем в репозитории SVN. Меня не особенно интересует возврат изменений из SVN или синхронизация веток и тегов; Я просто хочу иметь "зеркало" SVN одной из моих ветвей.

Прочитав справочную страницу git-svn и различные другие источники, я дошел до настройки репозитория svn с помощью git svn init, но он отказывается что-либо dcommit:

$ git --version
git version 1.9.5.msysgit.0
$ git clone ssh://[email protected]:4321/myproject/playground.git
Cloning into 'playground'...
$ cd playground
$ svn mkdir --parents https://svn-server.mydomain.com:5432/svn/playground/trunk -m "Importing git repo" 
Committed revision 15900.
$ git svn init https://svn-server.mydomain.com:5432/svn/playground/trunk
$ git svn fetch
W: Ignoring error from SVN, path probably does not exist: (175007): HTTP Path Not Found: REPORT request failed on '/svn/145273/!svn/bc/100/playground/trunk': '/svn/145273/!svn/bc/100/playground/trunk' path not found
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories
r15900 = 1ad941791edb06c4df8281cd31e69ce5d508e728 (refs/remotes/git-svn)
$ git svn dcommit
Unable to determine upstream SVN information from HEAD history.
Perhaps the repository is empty. at C:\Program Files (x86)\Git/libexec/git-core\git-svn line 856.

«Возможно, репозиторий пуст» -> конечно, я пытаюсь «клонировать» ветку git в svn. Любая идея, что я делаю неправильно здесь?


person Zirzirikos    schedule 26.03.2015    source источник


Ответы (2)


Вы можете проверить SubGit и их надстройку для Atlassian Stash. Он аккуратно позаботится о зеркалировании Git в SVN во время перехода.

Раскрытие информации: я работаю в Atlassian

person Rog    schedule 29.03.2015
comment
Спасибо, это выглядит довольно аккуратно и, кажется, решает большинство проблем с git-svn. В конце концов, мы решили не заморачиваться с зеркалированием svn и просто переходим на git/stash за один раз, но если мне нужно зеркалирование svn, это кажется хорошим выбором. - person Zirzirikos; 31.03.2015

Ответ найден здесь: http://eikke.com/importing-a-git-tree-into-a-subversion-repository/

Это не удается, так как команда git svn не может определить, какие из них отправляются на push: между нашим исходным репозиторием Git и заголовками Subversion нет связи.

Чтобы исправить это, мы можем использовать прививку Git, чтобы связать их. Мы скажем Git, что фиксация, которая создала папку SVN, в которой мы хотим сохранить проект, является родительской фиксацией первой фиксации в нашем репозитории Git:

$ git show-ref trunk
741ab63aea786882eafd38dc74369e651f554c9c refs/remotes/trunk
$ git log --pretty=oneline master | tail -n1
88464cfdf549a82b30ee7c52e53e2b310f0d9ec4 Initial version
$ echo "88464cfdf549a82b30ee7c52e53e2b310f0d9ec4 741ab63aea786882eafd38dc74369e651f554c9c" >> .git/info/grafts
person Zirzirikos    schedule 26.03.2015