На самом деле для вас существует скрипт Subversion, который называется svn-merge-repos.pl
Я не уверен на 100%, что вы понимаете концепцию работы Subversion,Вы изучили книгу Subversion ?
В Subversion нет реальных метаданных tags/labels
или branches
, которые вы найдете во многих системах контроля версий.Вместо этого вы помещаете теги и ветви в свои собственные каталоги.Чтобы создать ветку или тег, вы копируете то, что хотите разветвлять или тегировать в каталог:
# Creating a branch for 2.0 development from trunk
$ cp http://server/svn/module/trunk http://server/svn/module/branches/2.0
# Tagging my 2.0 development as 2.0.1
$ cp http://server/svn/module/branches/2.0 http://server/svn/module/tags/2.0.1
Теоретически вы можете просто создать новый каталог branch
или tag
для каждого выпуска иветка, над которой вы работаете, без необходимости объединения репозиториев.Именно это я и сделал, когда сделал конвертацию StarTeam в Subversion.Проблема в том, что вы теряете связь между скажем ревизией 2.0.1 и 2.0.2, поскольку они не имеют общей истории.В 99% случаев это не проблема, и вы всегда можете вернуться к исходному архиву StarTeam, если вам что-то понадобится.Через несколько месяцев это никого не волнует.
Однако, если вы знаете связь между ветками и тегами и хотите сохранить эту информацию, вам придется выполнить двухэтапный сценарий, который я описал выше.
Например, у вас есть ветвь 2.0
из trunk
, тег 2.0.1
, тег 2.0.2
и тег 2.0.3
, вы можете сделать это:
- Поместите выпуск ветки 2.0.1 в ствол.
- Скопируйте ствол в
branches/2.0
. - Поместите следующую ветку в ствол и скопируйте ее в ее ветку (используйтеСкрипт svn-merge-repos.pl)
- Наконец, поместите текущий транк.
- Теперь перейдите в этот каталог
branches/2.0
и скопируйте его в tags/2.0.1
.Используя сценарий svn-merge-repos.pl, создайте выпуск 2.0.1
для branches/2.0
и скопируйте его в tags/2.0.2
.Продолжайте, пока не дойдете до верхушки ветки 2.0.
Это займет гораздо больше времени, но это выполнимо.В прошлый раз, когда я сделал это, мне потребовалось около полутора недель, чтобы сделать преобразование .К счастью, сначала я сделал транк, а затем активную версию, которую смог сделать за день.Затем вернулся к менее активному материалу.