Добавить svn repo в существующий репозиторий git?
Я знаю, что вы можете отслеживать репозиторий svn с помощью git с помощью git svn init, однако это необходимо, если вы хотите создать новое репо.
Моя ситуация заключается в том, что у меня уже есть существующий репозиторий git и вы хотите отслеживать ствол репозитория svn, сделав его удаленной ветвью в моем текущем репозитории git.
Любые предложения?
Ответы
Ответ 1
После поиска вчера вечером я наконец нашел ответ:
http://i-nz.net/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/
Кажется, что вам нужно входить и вручную редактировать файл .git/config, чтобы добавить ветвь svn в существующий репозиторий git. Поэтому в соответствии с этими инструкциями мне нужно будет добавить запись для каждой ветки.
Ответ 2
1) Определите новую ветвь в .git/config:
[svn-remote "release-branch"]
url = svn+ssh://[email protected]/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
Вы можете найти SVN_BRANCHED_REVISION, выполнив:
$ svn log --stop-on-copy PATH_TO_BRANCH
Ответ 4
Это на самом деле то, что git svn init делает - другие команды git svn просто объединяют вещи вместе и т.д. Вы можете git svn init и/или скопировать макет репозитория SVN, клонированного с помощью git svn clone, и вы должны просто иметь возможность втягиваться в локальную ветвь или извлекать и так далее. Потратьте некоторое время на man-страницу для git svn, и вам не нужно слишком много хлопотать с чем-то вместе; если вы это сделаете, # git на freenode - хороший ресурс. Таким образом, это должно быть возможно без особых проблем, но я не знаю точно, как это сделать.
Ответ 5
Ответы на этот вопрос (fooobar.com/info/131336/... и fooobar.com/info/131336/...) больше не работают с Git v1.8.3.2 (fooobar.com/info/33392/...). Вы можете сделать это вместо:
1) Определите новую ветвь в .git/config:
[svn-remote "release-branch"]
url = svn+ssh://[email protected]/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