【问题标题】:Why shouldn't you commit on a tag为什么不应该提交标签
【发布时间】:2011-07-31 11:53:07
【问题描述】:

我正在寻找论据来说服客户一旦创建标签,他就不应该对其进行更改。

常识似乎不是有效的论据,所以我需要更实质性的东西。

【问题讨论】:

    标签: svn tags commit


    【解决方案1】:

    旧帖子,但其他人可能仍会阅读它,我将添加我的两分钱:

    以前的答案都依赖于您所说的客户没有回应的常识。试试这个故事: “标签就像在婚礼上拍全家福。你不会拿出永久记号笔把丽莎阿姨添加到照片上,对吧?如果你想画画,就用一张纸代替。(=分支) "

    作为旁注,了解客户为什么要提交标签会很有趣。当我知道对方想要达到什么目标以及背后的需求时,我发现争论起来会容易得多。

    【讨论】:

      【解决方案2】:

      好吧.. 如果您有出色的同事制作的标签是严重臃肿的代码版本、充满临时文件等,那是绝对没有必要的?!我认为删除垃圾并重新提交标签很好..只要有关于它的评论(评论会有时间戳,我假设对标签的任何更改也会有时间戳,所以很容易寻找那个时候的cmets)。当然,如果您是一家大公司,或者是一家非常专业、结构良好且有繁文缛节的公司(我们还远远没有做到这一点),那就另当别论了。

      【讨论】:

        【解决方案3】:

        标记版本时,很难预测您以后是​​否需要返回该版本并进行更改。有时你希望自己创建一个分支而不仅仅是一个标签,但大多数时候一个分支是多余的。

        也许您可以说服您的客户采用另一种方法,在提交标签和创建分支之间(很多人担心)。

        首先制作标签的本地副本,然后进行必要的更改(本地),并将结果作为新标签提交。如果新版本需要多次提交,您可以给新标签一个草稿名称——只是为了确保没有人将此标签误认为是完成的版本——当所有提交完成后,重命名新标签为最终名称。 (我相信 SVN 允许重命名标签,虽然我从来没有这样做过。)

        【讨论】:

          【解决方案4】:

          标签应该及时指向一些现有的修订。你基本上是给这个版本一个名字,即标签。 在 SVN 中,tag 只是 /tags 目录中的一个副本,因此可以提交,但这只是一个实现细节。 没有什么可以阻止您提交,但这很不寻常,使用该标签的人可能会感到困惑这个标签到底代表什么......创建标签或新更改时的原始修订。最后,一切都是为了传达您的意图。

          在其他系统中,标签只是指向特定版本的指针。您可以从标记的修订创建新分支,但标记仍然指向原始修订。

          【讨论】:

            【解决方案5】:

            标签在固定时间点作为源代码的副本存在 - 无论您可能对 Trunk 或任何 Branch 文件夹进行任何更改,您都可以随时返回到标签时的代码副本已创建。

            如果您承诺标记副本,则它们不再代表创建副本时的来源 - 所以拥有它们没有什么意义。您的客户应该致力于主干或分支。

            【讨论】:

              【解决方案6】:

              使用该项目的用户可能正在使用您的代码的某个标记版本。他们知道他们的代码可以与您指定的标签一起使用,并且会很乐意根据这个假设发布。如果您更改标签,则用户的代码可能会中断。一个标签就是字面上的意思——它是一个稳定的里程碑,其他用户可以考虑在这个里程碑上一成不变。

              此外,如果项目中有多个开发人员,他们将致力于trunk。当他们更新时,他们将无法获得对标签所做的更改,这将导致巨大的合并问题。

              【讨论】:

                猜你喜欢
                • 2011-05-24
                • 1970-01-01
                • 1970-01-01
                • 2023-01-23
                • 2016-05-15
                • 1970-01-01
                • 2018-12-07
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多