3

在我们的 mercurial 项目配置中,我们在一个存储库中有 3 个分支。一个是完成紧急错误修复的稳定版本分支,一个是包含新功能代码的功能分支,一个是 UAT 分支,其中合并了错误修复和新功能以提供最新的代码库.

我们已经将一大堆新功能代码合并到 UAT 分支中,完全没有任何问题。之后我们将稳定分支与错误修复合并到 UAT 分支中,但这似乎具有删除新功能代码的效果。我发现这个问题是由不久前有人将 UAT 合并到 stable 引起的(这本不应该发生的!!)。现在,当我尝试将错误修复合并到 UAT 中时,它会删除所有新功能代码。

有没有办法将合并的影响从 UAT 移除到稳定状态,同时仍然保留在这个“错误合并”之后作为后代的错误修复?我已经尝试退出合并,但它似乎根本没有效果。我可以做一个剥离并重新添加所需的变更集吗?

提前致谢。

4

1 回答 1

1

通过一些试验和错误,我实际上已经设法自己解决了这个问题。

首先,您需要在 mercurial.ini 文件中启用移植和 mqMerge 扩展。在扩展标题下方添加以下行

   transplant=
   mq=

将您的存储库克隆到新位置。在您的新存储库中,通过使用 strip 命令清除历史记录来删除错误合并,从而删除错误合并的影响。(请注意,这将删除所有后代变更集)

然后,您需要使用类似于下面的命令从其他存储库中按时间顺序挑选所有必需的变更集

    hg transplant -s "otherRepo" -b "branchName" "changesetHexNumber"

对所有必需的变更集重复移植命令。哎呀!

注意:如果您使用的是中央存储库,您将需要在那里剥离有问题的合并/变更集,否则您的本地存储库会认为您有未完成的变更集要提取。

于 2011-10-21T14:32:23.143 回答