我正在从现有的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分支的转换可能就足够了。
答案 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中移动分支,是否会保留历史记录?