CVS中标签和分支的区别是什么?他们是同义词吗?

时间:2016-11-21 10:12:15

标签: cvs

我发现在CVS的情况下两者都可以互换使用。我理解分支是git,clearcase等开发的分叉线.CVS文献有点令人困惑。据我所知,他们是不同的。请评论。

1 个答案:

答案 0 :(得分:1)

它们不是同义词。

如果您熟悉git,从高级概念角度来看,它们在CVS中与git大致相同。

“分支”是您可以签出并提交更改的一系列工作。分支包含许多文件,每个文件都有一个特定于分支的历史记录。

“标记”是指从某个时间点开始的存储库快照。您无法将提交添加到标记。

这是一张示例图片

            tag v1.1
             |
-o---o---o---o---o---o HEAD (the "main trunk")
  \
   \---o---o---o feature_branch

坦率地说,这都是非常标准的软件术语。

一些特定于CVS的说明:

  • 许多cvs命令将采用分支或标记。所以你可以cvs update -r <branch>cvs update -r <tag>(就像在git中一样)。如果您已更新为标记,则无法进行提交,如果您已更新为分支,则可以。 (与git没那么不同。)CVS只使用一个字段来存储这个“粘性标记”,即使它实际上用于“标记或分支”。
  • 实际上,在CVS中,标签不需要在任何历史时间点代表任何一个分支的状态,但这对于您要求的内容来说太高级了。您可以在cvs中将任何文件子集和文件版本组合标记在一起。
  • CVS实际上是以文件为中心而不是以回购为中心的,所以上面的图表显示回购就像是一个单位一样具有欺骗性。