CVS到SVN转换和重组分支

时间:2008-08-18 09:26:17

标签: svn cvs

我正在从现有的CVS存储库转换为SVN存储库。 CVS存储库有很少的brances,我想在转换时重命名分支。

通缉转换是这样的:

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

即,CVS HEAD成为正常分支,CVS branchA成为SVN中继。

CVS和SVN存储库都将位于同一台Linux机器上。

怎么可以这样做?

此外,CVS branchA成为SVN中继并且忽略所有其他CVS分支的转换可能就足够了。

7 个答案:

答案 0 :(得分:8)

我对保留提交历史特别感兴趣。如果我在转换后重命名并在SVN中移动分支,是否会保留历史记录?

是。 Subversion还会跟踪目录结构的更改,即使文件在树中移动,也会保留所有版本历史记录。

我建议使用cvs2svn转换存储库,包括分支和标记。一旦存储库在Subversion中,您可以根据需要移动分支和标记。这也保留了重命名的实际标签和分支的历史记录,这在以后的历史背景中可能会很有趣。

答案 1 :(得分:5)

我做了CVS已经有一段时间 - > SVN转换,甚至可能更长,因为我做了一个非常重要的分支结构。由于SVN可以非常容易地在目录树中移动,因此您可以先进行整个转换,然后在SVN中完全整理出主干/分支结构。

如果你确实达到了这一点并且正在SVN中移动整个目录树,那么最好是在每个树重命名/移动步骤之后提交。请记住一些事情。

答案 2 :(得分:1)

Subversion分支是目录,因此您可以在导入完成后移动分支,并且不会丢失历史记录。

答案 3 :(得分:1)

支持接受答案的一些其他信息:

cvs2svn不允许从主干转换为分支或分支转换为主干

一旦转换为svn,移动的东西是最好的方式。

答案 4 :(得分:1)

转换后可以移动主干和分支目录,但这需要一个明确的转换后SVN提交,它将保留在您的SVN历史记录中,使历史探索更加复杂。

但您确实可以告诉cvs2svn使用--symbol-hints=symbol-hints.txt命令行选项将中继和分支存储到所需的SVN路径,或者(如果您使用选项文件进行转换){{ 1}}符号策略规则,其中SymbolHintsFileRule('symbol-hints.txt')是包含以下行的文件:

symbol-hints.txt

请注意,cvs2svn自动生成的某些提交消息(例如,用于创建分支)将提及原始分支名称。

答案 5 :(得分:1)

尽管可以在转换完成后移动分支,但最好设置cvs2svn配置文件以准确指定每个现有分支所需的名称。其中一个好处是FishEye会更好地理解输出。

答案 6 :(得分:0)

我对保留提交历史特别感兴趣。如果我在转换后重命名并在SVN中移动分支,是否会保留历史记录?