2009-06-15 32 views
0

我们公司最近开始创建CVS分支来标记每个版本。以前我们一直在使用标签,如果我们在测试期间修正了某些需要与发布版一起发布的内容,我们只是将标签向前移动。这个效果很好,直到对同一个文件进行了两个更改:一个应该被释放,另一个不应该被释放。现在我们需要对head和release分支应用相同的更改。为什么CVS中的分支标签没有向前移动?

我使用Eclipse的CVS插件与CVS交互。当我查看文件的历史记录时,我在“标签”部分(在本例中为文件的修订版本1.30)中看到一个i20090529Release标签,并且当我在“历史记录”视图中显示标签查看器时,图标表明这是一个分支标签,而不是版本标签。当我查看自分支发生以来已经提交的修订版本时,我发现对头部进行的下一修订版本变为版本1.31,并且对分支所做的下一修订版本变为版本1.30.2.1。我的问题是,为什么i20090529Release标签会保留该文件的版本1.30,该文件不是i20090529分支上的最新版本?这真的是一个真正的“标签”,还是更多的是这个分支在这一点上开始分支的概念性想法?我注意到我不能将这个标签应用到该文件的任何其他版本。它为什么会出现在Tags列?

在此先感谢您提供的任何说明。

+0

旁注:你可能会做更好的放弃CVS,如果在所有可能的Git(其中有非常清晰的分支概念),或者至少Subversion(它使用便宜的副本用于分支;它不是最好的模型,但比标签分支点(即特殊修订版号)的CVS更好)。 – 2009-07-07 13:56:29

+0

采取了点。对于我们的新项目,我们已经开始使用SVN,但我们仍然需要迁移旧的项目。 Eclipse插件如何支持Git与SVN进行比较? – StriplingWarrior 2009-07-07 15:23:04

回答

2

这是分支开始分支的想法。

分支是一组版本,在某些时候分支主干,并保持自己的独立发展(当然可以密切协调)。这不是一组将会自动应用于更高版本的更改。

它不是通常意义上的标签:如果您根据标签签出,则会在标签生成时获取源树的快照,而根据分支签出的结果随着时间的推移会发生变化,因为分支机构发生变化。它与标签类似,并且工作方式大致相同; CVS使用旧的RCS文件格式,并将RCS标签用于分支和CVS标签。

CVS有几个很好的参考。阅读标签和分支。

+0

因为你回答了我的主要问题,所以我会标记这个正确的回答:这是分支开始分支的想法。我已经阅读了几篇关于CVS的参考文献,特别是关于标签和分支的部分。我无法找到的信息是为什么这个标签出现在原始版本中,即使在我对分支进行了新的更改之后。 – StriplingWarrior 2009-06-16 16:40:31

+0

CVS作为一组脚本在较早的RCS上启动,并保留RCS文件格式。 RCS没有(或者至少没有)具有相同的分支概念,所以RCS标签既用作常规标签又用作分支标记。 RCS标签1.12.0.2是1.12.2分支的开始,并且像1.12.2.3这样的标签是该分支的版本。有很多这样的小怪事,这是很多人转移到Subversion的原因之一。 – 2009-06-16 17:20:28

0

正常标签被设置为特定的文件修订版,并且永远不会移动。如果是1.30,它会说1.30,直到手动更改。

分支标签被定为一个分支版本,如果分支一个具有版本1.30的文件,第一个分支将是1.30.2(或者下一个空闲的偶数)。第一个提交到这个分支的文件将得到1.30.2.1,下一个提交1.30.2.2等(详见Oliver Giesen的评论)

从此(1.30.2)分支中检出此文件将始终获取最新的文件修订在该分支(1.30.2.x)中。

人们也可以做树枝树枝..然后修改将endup像1.30.2.2.2(在1.30.2.2文件修订的第一个分支) 修订位于CVS <branchrevision>。 <filerevison> [。 <branchrevision>。 <filerevison>] [。 <branchrevision>。 <filerevison>] ...等等。第一个分支修改总是1(afaik)。

编辑:固定偶数错误指出由奥利弗·吉森

1

这可能是因为你不使用它不动 - 根据您的描述,你还在犯的所有修订的HEAD 。

要使用一个分支,你必须先标记所有与分支标签(从CVS手册本示例)文件:

cvs tag -b rel-1-0-patches 

与此同时,我强烈建议快照标签,你从来没有移动或更新,让你可以随时重建该点的代码时间:

cvs tag rel-1-0 

要使用分支,你必须分公司签出到您的工作目录:

cvs co -r rel-1-0-patches example 

然后,当您对分支提交更改时,您会看到应用于更改的分支标记。你不会看到HEAD上的任何变化。要做到这一点,你需要合并分支变成HEAD,这是一个有点复杂,放在一个SO回答,所以去文档:http://ximbiot.com/cvs/manual/cvs-1.11.23/cvs_5.html#SEC54

相关问题