CVS到SVN迁移和分支内的分支

时间:2012-04-19 18:14:26

标签: svn branch cvs2svn tortoisecvs

我最近使用cvs2svn工具从CVS迁移到SVN。在我的一个项目的新迁移项目中,最新版本是分支A(父目录)的一部分。在这个项目中,我有一个子项目,其最新版本是另一个分支说分支B.所以基本上trunk没有我的Main项目的最新版本。

所以在CVS中,一旦我签出我的父文件夹(分支A),我就会浏览到我的子项目>右键+点击> CVS>更新特别>选择分支B(因为分支B具有最新的子项目)。这将检查子项目的最新版本,我将拥有我的主项目的最新版本。

然而,在SVN中,我没有看到这个选项。据我所知,SVN只能用修订而不是分支更新。我是SVN的新手,所以我错的可能性更大。有没有办法在CVS场景中做我想做的事情?

我想出了一个关于检查主项目(分支A)的方法,然后分别检查子项目(分支B)。然后我会从第一个结账时删除这个子项目(父项目 - 分支A),并将其替换为子项目的第二个结账版本。

2 个答案:

答案 0 :(得分:1)

您可以使用svn externals完成目标。该子项目将是另一个回购的外部。

答案 1 :(得分:0)

听起来你正在尝试进行稀疏分支。在稀疏分支中,您有一个分支作为基础(我们将其称为分支A ),而在另一个分支上(我们将其称为分支B ),您只需将来自分支A 的更改,而不是整个分支。

这有时在CVS中完成,因为分支需要很长时间。我们发现小型项目需要20分钟,大型项目需要长达一个小时。然而,它最终很难跟踪,我发现使用它的网站往往会忘记如何完成检查。连续构建系统也无法处理CVS稀疏分支设置。

Subversion不进行稀疏分支(至少非常容易),但Subversion中的分支是快速而简单的。创建分支只需不到一秒钟。在Subversion中,您应该使用分支A ,并从分支A 创建分支B 。然后,将 Branch A Branch B 之间的所有差异放在 Branch A 上。对分支A 的更改必须定期合并到分支B

稀疏分支的问题是,如果在两个分支上更改文件,则永远不会拾取它。通过合并,两个分支上的更改将添加到 Branch B 上的文件中。这就是为什么很少有网站进行稀疏分支的原因。

您需要从分支A 创建新的分支B ,然后对旧分支B 上的所有更改进行这个新的 Branch B 并将其签入。然后,Branch B将包含它需要的所有文件,您可以使用持续集成系统,并且检入文件是一步操作。