Преобразование CVS в SVN и реорганизация филиалов - PullRequest
6 голосов
/ 18 августа 2008

Я преобразую из существующего хранилища CVS в хранилище SVN. В репозитории CVS есть несколько веток, и я хотел бы переименовать ветки при конвертации.

Требуемое преобразование выглядит так:

CVS branch         SVN branch
HEAD       ->      branches/branchX
branchA    ->      trunk
branchB    ->      branches/branchB
branchC    ->      branches/branchC

То есть, CVS HEAD становится нормальной ветвью, а CVS branchA становится SVN-магистралью.

И CVS, и SVN-репозитории будут находиться на одном компьютере с Linux.

Как это могло быть сделано?

Также может быть достаточным преобразование, когда ветвь CVSA становится магистралью SVN, а все остальные ветви CVS игнорируются.

Ответы [ 7 ]

8 голосов
/ 18 августа 2008
Я особенно заинтересован в сохранении истории коммитов. Если я переименую и переместу ветки в SVN после конвертации, сохранится ли история?

Да. Subversion также отслеживает изменения в структуре каталогов, и вся история версий сохраняется даже при перемещении файла в дереве.

Я рекомендую преобразовать репозиторий с cvs2svn , включая ветви и теги. Когда репозиторий находится в Subversion, вы можете перемещать ветки и теги по своему усмотрению. Это также сохраняет историю фактических переименованных тегов и ветвей, что может быть интересно в историческом контексте позже.

5 голосов
/ 18 августа 2008

Прошло много времени с тех пор, как я сделал преобразование CVS -> SVN, и, вероятно, даже дольше, так как я сделал одно с нетривиальной структурой ветвлений. Поскольку SVN может довольно легко перемещаться по деревьям каталогов, вы можете сначала выполнить полное преобразование, а затем полностью разобраться в структуре ствола / ветвей внутри SVN.

Если вы дошли до этой точки и перемещаетесь по целым деревьям каталогов в SVN, вероятно, лучше всего выполнять коммит после каждого шага переименования / перемещения дерева. Просто что-то иметь в виду.

1 голос
/ 03 декабря 2008

Хотя перемещение по ветвям после преобразования возможно, может быть лучше настроить файл конфигурации cvs2svn, чтобы точно указать имя, которое вы хотите для каждой из существующих ветвей. Одним из преимуществ этого является то, что FishEye будет гораздо лучше понимать вывод.

1 голос
/ 17 октября 2008

Можно переместить каталоги стволов и ветвей после преобразования, но для этого потребуется явная фиксация SVN после преобразования, которая останется в вашей истории SVN, что усложнит исследование истории.

Но вы действительно можете сказать cvs2svn хранить транк и ветви по желаемым путям SVN, используя параметр командной строки --symbol-hints=symbol-hints.txt или (если вы используете файл параметров для преобразования) символ SymbolHintsFileRule('symbol-hints.txt') правило стратегии, где symbol-hints.txt - это файл, содержащий строки, подобные следующим:

. .trunk. trunk branches/branchX .
. branchX branch trunk .

Обратите внимание, что в некоторых сообщениях коммита, автоматически сгенерированных cvs2svn (например, для создания ветки), будет упоминаться исходное имя ветки.

1 голос
/ 24 сентября 2008

Некоторая дополнительная информация в поддержку принятого ответа:

cvs2svn не разрешает преобразование из транка в ветку или из ветви в транк

так что передвигаться, как только вы перейдете в SVN, - лучший путь.

1 голос
/ 18 августа 2008

Ветви Subversion являются каталогами, так что вы можете просто переместить ветки после завершения импорта, и история не будет потеряна.

0 голосов
/ 18 августа 2008

Я особенно заинтересован в сохранении истории коммитов. Если я переименую и переместу ветки в SVN после конвертации, сохранится ли история?

...