在我们的mercurial项目配置中,我们在一个存储库中有3个分支。一个是稳定版本分支,其中完成了紧急错误修复,一个是包含新功能代码的功能分支,另一个是UAT分支,其中错误修复和新功能都合并到一起以提供最新的代码库
我们已经将大量新功能代码合并到UAT分支中而没有任何问题。接下来,我们将稳定分支与错误修复合并到UAT分支中,但这似乎具有删除新功能代码的效果。我发现这个问题是由一个人将UAT合并到稳定之前引起的(这应该从未发生过!!)。现在,当我尝试将错误修复程序合并到UAT中时,它会删除所有新的功能代码。
有没有办法将合并的效果从UAT中删除到稳定,同时仍然保留在这次'糟糕合并'之后的后代错误修复?我已经尝试退出合并,但似乎根本没有效果。我可以做一个剥离并重新添加所需的变更集吗?
提前致谢。
答案 0 :(得分:1)
我实际上已经设法通过一些试验和错误来解决这个问题。
首先,您需要在mercurial.ini文件中启用移植和mqMerge扩展。添加扩展标题
下面的行后面的行 transplant=
mq=
将您的存储库克隆到新位置。 在新的repo中,使用strip命令清除错误合并,删除错误合并的效果。 (请注意,这将删除所有后代更改集)
然后你需要使用类似于下面的命令,按照时间顺序从其他仓库中挑选所有必需的变更集
hg transplant -s "otherRepo" -b "branchName" "changesetHexNumber"
对所有必需的变更集重复移植命令。 Ouila!
注意:如果您使用的是中央存储库,则需要删除有问题的合并/变换集,否则您的本地存储库会认为您有未完成的变更集。