gpt4 book ai didi

version-control - SCM中标签的正确使用

转载 作者:行者123 更新时间:2023-12-02 17:30:12 26 4
gpt4 key购买 nike

我和我的同事正在就发布/SCM 系统中标签的值(value)和使用进行争论。我们希望 StackOverflow 社区能够提出他们的想法,以帮助我们解决问题。

一方声称标签是发布管理的一个有值(value)的补充。它们的使用示例:我们发布了一个 Maven 版本,它创建了一个新标签(称为 1.0),这是用于此版本的代码快照。该标签应该是只读分支。当需要修复错误时,我们可以将标签复制到新分支(称为 1.1)。错误修复就在那里。这些修复可能会合并回主干,以便主开发分支获得错误修复。最后发布1.1并自动创建Tag 1.1。这个循环继续下去。标签的主要好处是,如果您出于任何原因需要重新发布 1.0 版,您可以放心地发布标签 1.0,因为它从未被任何人更改过。另外,说“发布标签 1.0”比说“发布分支 1.0 的修订版 1,这是没有修复的原始 1.0”更简洁。

另一方声称标签没有提供任何有值(value)的好处,特别是在像 Subversion 这样具有全局修订版的系统中,其作用类似于 CVS 中的标签。另外,Subversion 仅在提交标签时发出警告;它实际上并没有阻止它。他们的方法是在主干中开发,发布后你将创建一个名为 1.0 的分支。您将继续在 Trunk 中修复错误,如果您需要将这些错误修复重新发布到生产环境中,您可以将它们合并到 1.0 分支中并重新发布 1.0。在某个时候,也许在 Trunk 中进行重大修复或添加功能之后,您将发布并制作 Branch 1.1。循环继续。如果您需要发布原始 1.0 版本,则必须查看 Branch 1.0 修订版 1。

显然这两种方法都有效。我想听听社区对首选哪种方法以及原因的看法。

编辑:我有点担心“最佳”方法取决于底层的 SCM 系统。要么选择 Subversion 来寻求答案,要么如果可能的话,使其与 SCM 无关。

最佳答案

从 SCM 不可知论的角度来看,标签与修订版有很大不同。

两者的实现方式可能相同,都代表一条“时间线”,但目标不同:

  • 标签代表一种不可变状态,其中所有文件都由唯一的 ID 引用。这是一个名字representing many things但主要是稳定状态,...)
  • 修订版代表提交事务( not all SCM have those ,尤其是采用“逐文件方法”的旧版本)。所有提交并不代表“稳定”状态(如成功“编译”或“执行”)。它们只是全局历史的一个新元素。

SVN 的问题在于修订版、标签和分支的实现都是相同的。
但我仍然更喜欢将标签用作 "read-only" branch 的选项.

关于version-control - SCM中标签的正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/729961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com