1

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

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

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

我想出了一个检查主项目(A 分支)然后分别检查子项目(B 分支)的方法。然后我会从第一个结帐(父项目-Branch A)中删除这个子项目,并用子项目的第二个结帐版本替换它。

4

2 回答 2

1

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

于 2012-04-19T18:17:05.970 回答
0

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

这有时在 CVS 中完成,因为分支需要很长时间才能完成。我们发现小型项目需要 20 分钟,大型项目则需要一个小时。但是,它最终很难跟踪,而且我发现使用它的网站往往会忘记结帐的方式。持续构建系统也无法处理 CVS 稀疏分支设置。

Subversion 不做稀疏分支(至少很容易),但 Subversion 中的分支快速且简单。创建一个分支只需不到一秒钟。在 Subversion 中,您应该选择Branch A ,并从Branch A中创建Branch B然后,将Branch ABranch B之间的所有差异放到Branch A上。对分支 A 的更改必须定期合并到分支B。

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

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

于 2012-04-19T20:56:11.557 回答