Как импортировать ветки svn, внедренные в разные каталоги, в git с помощью git -svn?
У меня есть структура хранилища SVN, как показано ниже. Мы используем несколько уровней под ветками для различных разделов поддержки выпуска, а также каталог для ветвей функций.
git -svn init, похоже, работает с одним аргументом --branches, т.е. кажется, что все ветки находятся в одном месте.
trunk
branches
1.1
1.2.1
1.2.2
1.2
1.2.1
1.2.2
1.2.3
features
feature1
feature2
Любые идеи о том, как с этим справиться?
Спасибо
Ответы
Ответ 1
В вашем файле конфигурации установите для секции svn-remotes следующее:
[svn-remote "svn"]
url = svn://svnserver/repo
fetch = trunk:refs/remotes/trunk
branches = branches/*/*:refs/remotes/*
tags = tags/*:refs/remotes/tags/*
Это позволит вам захватить вложенные ветки.
Ответ 2
По соглашению, ветки Subversion все живут в одном "ветки" в репозитории Subversion, поэтому я не удивлен, что git-svn
делает это предположение.
Я бы предложил следующее (обратите внимание, что вы можете потерять некоторую историю в этой операции):
- Сгладить пути Subversion
branches
, используя соглашение об именах, чтобы сохранить уникальные идентификаторы и идею текущей структуры.
- Выполнить
git-svn
- Переместите вещи в репозитории
git
, чтобы соответствовать вашим практикам.
Опасность losing history
зависит от того, насколько хорошо git-svn
выполняет операции копирования с разных путей. Я столкнулся с этой проблемой, недавно переместив репозитории subversion (1.4-ish).
Ответ 3
Возможно ли создать репозиторий git
для каждого из подкаталогов ветвей?
Ответ 4
Вы можете добавить несколько пультов git svn
для каждой из ветвей или, возможно, в каждую из каталогов ветвей. Первоначальный git svn fetch
будет длиться вечно, но из того, что я понимаю, он должен работать.