代码之家  ›  专栏  ›  技术社区  ›  StriplingWarrior

为什么CVS中的分支标签不向前移动?

  •  0
  • StriplingWarrior  · 技术社区  · 17 年前

    我们公司最近开始创建CVS分支来标记每个版本。以前我们一直在使用标签,如果我们在测试期间修复了一些需要发布的东西,我们只需将标签向前移动即可。在对同一个文件进行两次更改之前,这可以很好地工作:一次应该发布,另一次不应该发布。现在我们需要将相同的更改应用于head和release分支。

    我正在使用Eclipse的CVS插件与CVS进行交互。当我查看文件的历史记录时,我在标签部分看到一个i20090529Release标签(在这种情况下是文件的1.30版),当我在历史记录视图中“显示标签查看器”时,图标表示这是一个Branch标签,而不是Version标签。当我查看自分支发生以来提交的修订时,我看到对头部的下一个修订变为1.31版本,对分支的下一次修订变为1.30.2.1版本。我的问题是,为什么i20090529Release标签与文件的1.30版本保持一致,而1.30版本不是i20090529分支的最新版本?这真的是一个真正的“标签”吗,还是分支在这一点上开始分支的一个概念性想法?我注意到我无法将此标签应用于文件的任何其他版本。为什么它会出现在标签列中?

    提前感谢您提供的任何澄清。

    3 回复  |  直到 17 年前
        1
  •  2
  •   David Thornley    17 年前

    这是分支从那时开始分支的想法。

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

    这不是通常意义上的标签:如果你根据标签签出,你会得到制作标签时源树的快照,而根据分支签出的结果会随着时间的推移而变化,因为分支会发生变化。它类似于标签,工作方式也大致相同;CVS使用旧的RCS文件格式,并对分支和CVS标签都使用RCS标签。

        2
  •  1
  •   kdgregory    17 年前

    要使用分支,您首先必须用分支标记标记所有文件(此示例来自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

        3
  •  0
  •   Joakim Elofsson    17 年前

    普通标签设置为特定的文件修订版,永远不会移动。如果标记为1.30,则会显示1.30,直到手动更改为止。

    从这个(1.30.2)分支检出此文件将始终获取该分支(1.30.2.x)中的最新文件版本。

    人们也可以在树枝上做树枝。那么修订版的结尾将类似于1.30.2.2.2(1.30.2.2文件修订版的第一个分支) 简历的修订如下:<分支修订><文件修订>[.<分支机构修订>.<文件修订>][.<分行修订>.<文件审查>]。..等等。第一次分支修订总是1(afaik)。

    编辑:修复了Oliver Giesen指出的偶数错误