我创建了一个名为v1.5
分支的标签。经过一些测试,我发现了一些错误,看来我必须将这些更改传播到tag/v1.5
. 但我看到一些评论不建议更新或合并标签的这种做法。
我的问题是处理这种情况的最佳方法是什么。可能删除标签并从分支头修订版重新创建它?
标签、分支等对 Subversion 本身没有意义,它们只是文件夹,你可以做任何你想做的事情。但是,有一些好的做法,标签意味着你永远不会改变的东西。你应该有一个工作流程并坚持下去。
例如,我们在后备箱中进行了新的开发。准备好后,我们创建一个分支,如 1.5,然后创建标签,如 1.5.1、1.5.2、1.5.3 等。我们添加错误修复并从中创建新标签,我们不添加新功能到分支,我们从不更改标签。然后,当有新的开发时,我们将分支中的错误修复合并到主干。这是一个非常常见的工作流程。
这是一篇较长的文章,我上面描述的在这里称为“稳定发布模型”,有一个很好的图像向您展示在哪里发生了什么。还有替代方案和长时间的讨论。我喜欢这些图表,这是另一个,但它有点令人困惑,箭头不应该交叉标签,标签应该永远是死胡同。
最好的做法是不要删除tags
,事实上标签并不意味着被触及,它们只是标签,而事实上所有东西都是任何 svn 存储库中的文件夹,这种做法是通常工作trunk
,更新branches
以防出现错误,然后离开tags
作为以前工作历史的标记以供参考,分支也可以用于单独的工作,最佳实践是使用单个主线单主干模式并尽可能避免分支(持续交付集成),但在您的情况下,我会从标签分支并更新它,然后合并回主干。 tags
是为了留下来。我要做的就是将其复制tag
到一个branch
带有分支名称并在那里进行更新。然后我会merge
回到trunk
. 为了自动合并svn 有一个很酷的实用程序,称为automerger 实用程序
Google 和 Facebook 采用了基于主干的开发。开发 在上面的材料中,这些 Google 员工谈到了在 HEAD 上的工作,并且签到总是发生在 HEAD 上。Ashish 在 Q&A 部分的最后几次提到了主干,他确实提到了避免分支以进行持续开发(与发布本身无关)。所以它是官方的,基于主干的开发 (TBD) 是谷歌所做的,而且他们会扩展它!(http://paulhammant.com/2013/05/06/googles-scaled-trunk-based-development/)
SVN 中的标签(通常)是 RO 子树。如果您在创建标签代码后进行了更改,则必须从更改的代码中创建新标签