Добавить SVN-репо в существующее GIT-репо? - PullRequest
43 голосов
/ 14 апреля 2009

Я знаю, что вы можете отслеживать svn-репо с помощью git, используя git svn init, но это если вы хотите создать совершенно новое репо.

Моя ситуация такова, что у меня уже есть существующее git-репо, и я хочу отследить ствол репозитория svn, сделав его удаленной веткой в ​​моем текущем git-репо.

Есть предложения?

Ответы [ 5 ]

22 голосов
/ 08 мая 2009

После поиска вчера вечером я наконец нашел ответ:

* ** 1003 тысяча два *http://i -nz.net / 2009/01/15 / селективного импорта-из-СВН-ветвей-в-а-gitgit-СВН-хранилище /

Похоже, что вам действительно нужно войти и вручную отредактировать файл .git / config, чтобы добавить ветку svn в существующее хранилище git. Таким образом, в соответствии с этими инструкциями мне нужно будет добавить запись для каждой ветви.

11 голосов
/ 29 сентября 2011

1) Определите новую ветку в .git / config:

[svn-remote "release-branch"]
        url = svn+ssh://xxxx@mono-cvs.ximian.com/source/branches/mono-2-2/mcs
        fetch = :refs/remotes/git-svn-release-branch

2) Импорт ветки SVN. SVN_BRANCHED_REVISION - это версия, когда произошла ветвь в SVN.

[~]$ git svn fetch release-branch -r SVN_BRANCHED_REVISION

3) Подключите локальную ветку Git к удаленной ветке:

[~]$ git branch --track release git-svn-release-branch

5) Оформить заказ и обновить

[~]$ git checkout release
[~]$ git svn rebase
3 голосов
/ 01 августа 2016

Ответы на этот вопрос (https://stackoverflow.com/a/840411 и https://stackoverflow.com/a/7592152) больше не работают с Git v1.8.3.2 (https://stackoverflow.com/a/19833311). Вы можете сделать это вместо:

1) Определите новую ветку в .git / config:

[svn-remote "release-branch"]
   url = svn+ssh://xxxx@mono-cvs.ximian.com/source/branches/mono-2-2/mcs
   fetch = :refs/remotes/git-svn-release-branch

2) Импортировать ветку SVN. SVN_BRANCHED_REVISION - это версия, когда произошла ветвь в SVN.

$ git svn fetch release-branch -r SVN_BRANCHED_REVISION

3) Создайте ветку и подключите локальную ветку Git к удаленной ветке:

$ git checkout -b release refs/remotes/git-svn-release-branch

5) Обновление

$ git svn rebase
3 голосов
/ 01 ноября 2012

Вы можете найти SVN_BRANCHED_REVISION, выполнив:

$ svn log --stop-on-copy PATH_TO_BRANCH
2 голосов
/ 14 апреля 2009

Это фактически то, что делает git svn init - другие команды git svn просто объединяют вещи и т. Д. Вы можете git svn init и / или скопировать макет репозитория SVN, клонированного с помощью клона git svn, и вам просто нужно быть в состоянии вытащить в локальную ветку, или получить, и так далее. Поработайте над страницей справочника по git svn, и у вас не должно возникнуть особых проблем, сложив что-то вместе; если вы это сделаете, #git на freenode - хороший ресурс. Так что это должно быть возможно без особых проблем, но я не знаю точно, как это сделать.

...