Если вы хотите сохранить только одну ветку без тегов , то это легко. Используется первое правило, соответствующее символу, поэтому укажите ветвь, которую вы хотите включить, а затем исключите все остальное:
cvs2svn --force-branch=mybranch --exclude='.*' ...
Если вы хотите включить не только ветку, но и как можно больше тегов, то это немного сложнее. Мало того, что вы не обязательно знаете имена всех тегов, но вы также не можете включать теги, которые зависят от исключенных ветвей. В этом случае проще всего работать с опциями --write-symbol-info и --symbol-hints:
cvs2svn --write-symbol-info=symbol-info.out --passes=1:3 ...
Это создаст файл с именем «symbol-info.out», содержащий информацию обо всех символах CVS. В вашем редакторе откройте этот файл, найдите все строки, соответствующие ветвям, которые вы хотите исключить, и измените третий столбец этих строк на слово «исключить». Убедитесь, что в третьем столбце строки для ветви, которую вы хотите включить, содержится слово «ветка», а в четвертом столбце указан путь, по которому вы хотите, чтобы он заканчивался.
Теперь снова запустите cvs2svn, начиная с этапа 3 и используя отредактированный файл информации о символах в качестве файла подсказок о символах:
cvs2svn --symbol-hints=symbol-info.out --passes=3 ...
вы получите много ошибок, таких как:
ERROR: ExcludedSymbol('FOO_BRANCH') cannot be excluded because the following symbols depend on it:
BAR_TAG
BAZ_TAG
Теперь вернитесь в редактор и измените перечисленные теги (BAR_TAG и BAZ_TAG в примере), чтобы они тоже были исключены, затем попробуйте снова запустить pass3. Эту процедуру, возможно, придется повторить пару раз, но она не должна быть громоздкой, поскольку pass3 выполняется очень быстро.
Когда вы получили pass3 для завершения без ошибок, запустите остаток преобразования:
cvs2svn --symbol-hints=symbol-info.out --passes=4: ...