Mercurial中的兼容性合并工作流程

时间:2013-07-03 13:47:54

标签: mercurial merge

除了“默认”之外,我在我的存储库中有一个“compat”分支,它支持旧版本的Python。所以默认的工作流程是我在“默认”中实现功能,合并到“compat”并修复那里的所有兼容性问题。这是一个典型的补丁工作流程,效果非常好。

但是,如果我想引入一些不应该在“compat”中的更改(例如在旧版本上不起作用的功能),该怎么办?为了不破坏我的默认工作流,我必须合并“默认”,然后退出所有不应该在这个分支中的变更集。

有没有更好的方法来处理这个问题(这不会破坏我的默认工作流程)?

2 个答案:

答案 0 :(得分:1)

您可以在默认分支机构中创建一个新的分支/书签,用于您在compat中不想要的更改。完成后,您可以将该分支/书签合并为默认值,然后将其合并到compat中,将其退出合并,然后提交。

hg update default
hg merge NonCompatFeature
hg commit -m "Merging NonCompatFeature -> default."
hg update compat
hg merge NonCompatFeature
hg revert --all -r compat
hg commit -m "Merging NonCompatFeature -> compat."

答案 1 :(得分:1)

我能想到避免虚拟合并的唯一方法是通过镜像您使用compat分支的设置来更改您的工作流程,以添加另一个分支来实现需要更新版本的更改Python(可能称为latest

您在default上实现与旧版Python兼容的功能,并像现在一样合并到compat,但也将它们合并到latest

然后,您就像现在一样修复compat上的兼容性问题,并以类似的方式在latest上实现需要Python新功能的功能。

您永远不会从latestcompat合并到default,因此他们的更改不会相互干扰。