6

我正在从现有的 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 机器上。

怎么可能做到这一点?

CVS branchA 成为 SVN 主干并且所有其他 CVS 分支都被忽略的转换可能就足够了。

4

7 回答 7

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

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

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

于 2008-08-18T10:08:26.090 回答
5

自从我进行 CVS -> SVN 转换以来已经有一段时间了,自从我使用非平凡的分支结构进行转换以来可能更久。由于 SVN 可以相当容易地在目录树中移动,您可以先进行整个转换,然后再在 SVN 中完全整理出主干/分支结构。

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

于 2008-08-18T09:34:58.280 回答
1

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

于 2008-08-18T09:34:19.373 回答
1

一些额外的信息来支持接受的答案:

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

所以一旦你转换成 svn 就移动东西是最好的方法。

于 2008-09-24T19:47:36.657 回答
1

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

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

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

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

于 2008-10-17T10:09:23.943 回答
1

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

于 2008-12-03T18:57:14.127 回答
0

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

于 2008-08-18T09:59:53.130 回答