在Mercurial中将dev分支合并/转换为稳定分支的正确方法是什么?

时间:2010-04-26 17:58:21

标签: mercurial merge branch

我为一家使用Mercurial作为其首选DVCS的网络开发公司工作。我们目前正在创建一个已经投入生产的网站的新版本。

站点的 stable development 分支都存在于同一个存储库中。生产站点运行 stable 分支,开发人员显然会针对开发(从现在开始 dev )分支编码(除了错误修正)。

这个模型对我们来说很新鲜。在上一次主要的生产推动之后,我们从刚刚发布的稳定分支创建了开发分支(使用 hg branch 来自最新的 stable 修订版并承诺创建一个新的< EM>尖)。

现在我们正在接近另一个版本,dev分支中存在大量新代码。与此同时, stable 分支只看到错误修正,所有已经移植到 dev 分支的

当我们对 dev 分支的状态感到满意并认为它已准备好生产时,我们想要的是 dev branch成为新的 stable 分支。在一个快速的笔划中, stable 分支将吸收对 dev 分支所做的大量更改。 dev 分支将(我们假设)基本上变为非活动状态,直到我们再次开始开发新内容为止。

实际实现这一目标的正确过程是什么?从 dev 的提示进行简单的合并,同时检查 stable 分支的提示,或其他什么?正如我所说的,对 stable 的所有更改都已存在于 dev 中,因此我们可以使用 dev 成为 stable >按原样。

一旦完成 dev stable 的神秘变形,并且结果已被标记,那么在 dev <上开始进一步开发的过程是什么? / em>再次分支,因为在合并到 stable 之后,它将没有活动的提示来检查?只需在合并之前查看最后一个 dev 修订版,并在其上提交以创建新的提示?这似乎是错的;我的直觉告诉我,“new dev ”应该从合并后的&amp;标记稳定分支的提示,但我不知道是怎么做的。 (如上所述,上次我们通过首先创建命名的 dev 分支来实现这一点;这次我们只想创建一个新的 tip 到现有的,尽管可能非活动后合并 dev 分支)

对于那些习惯于分布式版本控制和Mercurial的人来说,这是一个简单的问题,但是我们离开SVN-land时间不长,事情仍然有些模糊。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:3)

如果开发分支已经完成了对稳定分支的所有添加,并且开发分支已准备好成为新的稳定分支,那么您可以只分支开发分支的新稳定分支。可以保留旧的稳定分支,以防遗留代码的用户需要修补程序。

答案 1 :(得分:2)

我会:

  • 在稳定之上的第一个rebase dev:见Mercurial rebase
    这将允许您在dev分支中解决在开发分支生命周期期间在稳定分支上进行的错误修复可能发生的任何最后冲突。
  • 然后在dev中合并稳定(平凡合并):stable现在包含所有错误修正和dev变更集。
  • 从那里创建一个新的dev(dev2)分支,因为旧的分支刚刚重写了它的历史记录,这对任何人来说都不好。最好同意(对开发者来说)从新的开始。

答案 2 :(得分:1)

不是您问题的直接答案,而是存在关于mercurial的优秀教程here。本教程以非常简单的方式解释了合并。我发现在阅读本书后我比其他任何书都更了解Mercurial。