修复了mercurial中的错误合并



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

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

是否有一种方法可以消除从UAT合并到稳定的影响,同时仍然保留在这个"坏合并"之后的后代的错误修复?我试过退出合并,但似乎一点效果也没有。我可以进行剥离并重新添加所需的更改集吗?

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

首先,您需要在mercurery .ini文件中启用移植和mqMerge扩展。添加扩展头

下面的行
   transplant=
   mq=

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

然后你需要使用类似于下面的

命令,按时间顺序从其他的repo中挑选出所有需要的更改集
    hg transplant -s "otherRepo" -b "branchName" "changesetHexNumber"

对所有必需的更改集重复执行移植命令。Ouila !

注意:如果你使用的是中央存储库,你也需要删除有问题的合并/变更集,否则你的本地repo会认为你有突出的变更集要拉。

最新更新