5

如何将我在默认分支上所做的错误修复放入 mercurial 中的命名分支中?我最近开始研究一项新功能,所以我想我会在一个分支中完成这项工作(我以前没有真正做过),这样我就可以将更改保留在主默认分支之外,直到我完成它们的工作并且该功能已准备好部署。我的想法是我可以更新到默认分支并根据需要应用任何错误修复。

乌龟汞分支

现在我想把错误修复放到我命名的分支中。提示(rev 739)有我想合并到 BoardSummary 分支中的更改。我知道我可以合并,但我不想将我的 BoardSummary 更改带入默认分支。

我查看了mercurial: apply a bugfix change from stable named branch to dev branch answer,但这对我来说没有意义。

编辑:我同意“然后你发现变更集 2 引入了一个错误”,在我的情况下,我回到 732 修复了错误并提交(到默认值)。这个想法是在我分支之前修复已经到位。但是现在如何在不将 2 个分支合并在一起的情况下将该修复程序放入 738 中?看起来该错误实际上已在 739 中修复 - 因此尚未在 BoardSummary 分支中。这似乎是第二棵树在答案中显示的内容,但第三张图解释为“你会这样做” - 我不明白那一点

4

2 回答 2

7

显然,您的默认分支仅包含BoardSummary 分支中不存在的一个变更集。您应该将default合并到BoardSummary中,而不是相反。这样,BoardSummary将得到修复,并且所有BoardSummary都不会处于default状态。

总结一下:

$ hg up BoardSummary
$ hg merge default
$ hg commit -m "Merge the fix for #247"

一个解释

有多种分支可以使用。最常见的是:

  • 用于维护已发布版本的稳定(生产)分支,
  • 默认(master,trunk)分支,包含或多或少稳定的开发活动,
  • 功能分支,不够成熟,无法合并到主干。

这里的主要思想是从 stable 合并到 default 以及从 default 合并到 feature 总是安全的。这意味着就变更集而言,任何稳定分支都是默认分支的子集,而默认分支是功能分支的子集。

例如,您正在修改功能分支new-dal(主要功能)中的数据访问级别。同时,您在默认情况下添加了几个新报告(次要功能),并在1.0-stable中发现并修复了一个错误。好吧,只需合并从最旧到最新的分支(1.0-stable -> default -> new-dal),仅此而已。

这在 Mercurial wiki 上得到了很好的解释:标准分支:发布分支

你的情况

在您的情况下,BoardSummary显然是一个功能分支,因此您可以毫不犹豫地将默认值合并到其中。仅当您准备将新功能集成到默认值时,才应执行相反的操作。

于 2012-06-15T11:41:02.957 回答
0

首先,您应该从历史记录中回滚/删除提交 739(这是您的修复)。然后你在 r732 上提交修复。这将创建一个新的头,应该是新的 r739。您的历史记录应如下所示:

  r329
    |
--r232-----default branch
       \
        \
         feature branch

现在您将新的 head (r329) 合并到默认分支和功能分支中。现在历史应该看起来像链接答案中的最后一棵树。

于 2012-06-15T11:19:51.817 回答