合并/不合并svn标记的最佳实践



我在一个分支上创建了一个名为v1.5的标记。经过一些测试,我发现了一些错误,似乎我必须将这些更改传播到tag/v1.5。但我看到一些评论并没有建议更新或合并标签的做法。

我的问题是处理这种情况的最佳方式是什么。可能删除标记并从分支头修订中重新创建它?

标签、分支等对Subversion本身没有意义,它们只是文件夹,你可以做任何你想做的事情。然而,也有一些好的做法,标签意味着你永远不会改变的东西。你应该有一个工作流程并坚持下去。

例如,我们在主干道上进行新的开发。当它准备好后,我们创建一个分支,比如1.5,然后创建标签,比如1.5.1、1.5.2、1.5.3等。我们添加错误修复并从中创建新标签,我们不向分支添加新功能,也从不更改标签。然后,当有新的开发时,我们将错误修复从分支合并到主干。这是一种非常常见的工作流程。

这是一篇较长的文章,我在上面描述的被称为"稳定发布模型",这里有一个很好的图像来向您展示在哪里发生了什么。还有其他选择和长时间的讨论。我喜欢这些图,这是另一个,但有点令人困惑,箭头不应该交叉标签,标签应该总是死胡同。

最好的做法是不删除tags事实上,标签并不是要被触摸的——它们只是标签,而任何svn存储库中的所有东西都是一个文件夹,这种做法是通常处理trunk,在出现错误时更新branches,并将tags作为以前工作历史的标记以供参考,分支也可以用于单独的工作,最佳实践是使用单个主线-单主干模式,并尽可能避免分支(连续交付集成),但在您的情况下,我会从标记分支并更新它,然后合并回主干。CCD_ 7注定要留下来。我要做的是将tag复制到具有分支名称的branch中,并在那里进行更新。则我将CCD_ 10它返回到CCD_。对于自动合并,svn有一个很酷的实用程序,称为自动合并实用程序

谷歌和脸书采用了基于主干网的开发。在上面的材料中,这些谷歌员工谈到了在HEAD上工作,并且签入总是发生在HEAD身上。Ashish在一次问答中说主干几次;一节,他确实提到了避免为正在进行的开发进行分支(与发布本身无关)。所以这是官方的,基于主干网的开发(待定)是谷歌所做的,天哪,他们会扩展它!(http://paulhammant.com/2013/05/06/googles-scaled-trunk-based-development/)

SVN中的标签(传统上)是RO子树。如果您在创建标签代码后发生了更改,则必须从更改的代码中创建新标签

最新更新