2015-03-26 2 views
0

Я ищу способ создания существующего репозитория git (клонированного из центрального репо, размещенного на атласском кошельке), так что изменения из specfic-ветки синхронизируются с контуром в репозитории SVN , Мне не особенно интересно получать изменения из SVN или синхронизировать ветки и теги; Я просто хочу иметь SVN-зеркало одной из моих ветвей.Mirror git branch to svn repo

После прочтения GIT-SVN страницу человека и различные другие источники, которые я получил, насколько настройки SVN репо с мерзавец Svn первонач, но это будет отказаться от 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. Любая идея, что я делаю неправильно здесь?

ответ

0

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

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

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

Раскрытие: Я работаю на Atlassian

+0

Спасибо, что выглядит довольно аккуратно и, кажется, решить большинство проблем, связанных с GIT-SVN. В итоге мы решили не беспокоиться о svn-зеркалировании и просто переходим к git/stash за один раз, но если мне нужно svn-зеркалирование, это кажется хорошим выбором. – Zirzirikos