【发布时间】:2011-07-31 11:53:07
【问题描述】:
我正在寻找论据来说服客户一旦创建标签,他就不应该对其进行更改。
常识似乎不是有效的论据,所以我需要更实质性的东西。
【问题讨论】:
我正在寻找论据来说服客户一旦创建标签,他就不应该对其进行更改。
常识似乎不是有效的论据,所以我需要更实质性的东西。
【问题讨论】:
旧帖子,但其他人可能仍会阅读它,我将添加我的两分钱:
以前的答案都依赖于您所说的客户没有回应的常识。试试这个故事: “标签就像在婚礼上拍全家福。你不会拿出永久记号笔把丽莎阿姨添加到照片上,对吧?如果你想画画,就用一张纸代替。(=分支) "
作为旁注,了解客户为什么要提交标签会很有趣。当我知道对方想要达到什么目标以及背后的需求时,我发现争论起来会容易得多。
【讨论】:
好吧.. 如果您有出色的同事制作的标签是严重臃肿的代码版本、充满临时文件等,那是绝对没有必要的?!我认为删除垃圾并重新提交标签很好..只要有关于它的评论(评论会有时间戳,我假设对标签的任何更改也会有时间戳,所以很容易寻找那个时候的cmets)。当然,如果您是一家大公司,或者是一家非常专业、结构良好且有繁文缛节的公司(我们还远远没有做到这一点),那就另当别论了。
【讨论】:
标记版本时,很难预测您以后是否需要返回该版本并进行更改。有时你希望自己创建一个分支而不仅仅是一个标签,但大多数时候一个分支是多余的。
也许您可以说服您的客户采用另一种方法,在提交标签和创建分支之间(很多人担心)。
首先制作标签的本地副本,然后进行必要的更改(本地),并将结果作为新标签提交。如果新版本需要多次提交,您可以给新标签一个草稿名称——只是为了确保没有人将此标签误认为是完成的版本——当所有提交完成后,重命名新标签为最终名称。 (我相信 SVN 允许重命名标签,虽然我从来没有这样做过。)
【讨论】:
标签应该及时指向一些现有的修订。你基本上是给这个版本一个名字,即标签。 在 SVN 中,tag 只是 /tags 目录中的一个副本,因此可以提交,但这只是一个实现细节。 没有什么可以阻止您提交,但这很不寻常,使用该标签的人可能会感到困惑这个标签到底代表什么......创建标签或新更改时的原始修订。最后,一切都是为了传达您的意图。
在其他系统中,标签只是指向特定版本的指针。您可以从标记的修订创建新分支,但标记仍然指向原始修订。
【讨论】:
标签在固定时间点作为源代码的副本存在 - 无论您可能对 Trunk 或任何 Branch 文件夹进行任何更改,您都可以随时返回到标签时的代码副本已创建。
如果您承诺标记副本,则它们不再代表创建副本时的来源 - 所以拥有它们没有什么意义。您的客户应该致力于主干或分支。
【讨论】:
使用该项目的用户可能正在使用您的代码的某个标记版本。他们知道他们的代码可以与您指定的标签一起使用,并且会很乐意根据这个假设发布。如果您更改标签,则用户的代码可能会中断。一个标签就是字面上的意思——它是一个稳定的里程碑,其他用户可以考虑在这个里程碑上一成不变。
此外,如果项目中有多个开发人员,他们将致力于trunk。当他们更新时,他们将无法获得对标签所做的更改,这将导致巨大的合并问题。
【讨论】: