Mercurial中的兼容性合并工作流
除了“default”之外,我的存储库中还有一个“compat”分支,用于支持Python的旧版本。所以默认的工作流程是我在“default”中实现特性,合并到“compat”并修复所有兼容性问题。这是一个典型的补丁工作流程,效果非常好 但是,如果我想引入一些不应该出现在“compat”中的更改(例如,在旧版本中不起作用的功能),该怎么办呢。为了不破坏我的默认工作流,我必须合并“default”,然后撤销所有不应该在这个分支中的变更集Mercurial中的兼容性合并工作流,mercurial,merge,Mercurial,Merge,除了“default”之外,我的存储库中还有一个“compat”分支,用于支持Python的旧版本。所以默认的工作流程是我在“default”中实现特性,合并到“compat”并修复所有兼容性问题。这是一个典型的补丁工作流程,效果非常好 但是,如果我想引入一些不应该出现在“compat”中的更改(例如,在旧版本中不起作用的功能),该怎么办呢。为了不破坏我的默认工作流,我必须合并“default”,然后撤销所有不应该在这个分支中的变更集 有没有更好的方法来处理这个问题(不会破坏我的默认工作流程)?
有没有更好的方法来处理这个问题(不会破坏我的默认工作流程)?您可以在默认分支上创建一个新的分支/书签,用于更改您不希望在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."
我能想到的避免虚拟合并的唯一方法是通过镜像
compat
分支的设置来稍微更改您的工作流,以添加另一个分支来实现需要更新版本的Python(可能称为latest
)的更改
您可以在default
上实现与较早版本的Python兼容的功能,并像现在一样合并到compat
中,但也可以将它们合并到最新版本中
然后,您可以像现在一样修复compat
上的兼容性问题,并以类似的方式在latest
上实现需要Python新特性的特性
你永远不会从最新的
或兼容的
合并到默认的
中,这样它们的更改就不会相互干扰。这种虚拟合并正是我想要避免的,但似乎不可能:)另外,我想在默认分支中保持线性,但我想如果我首先(没有操作),我可以实现这一点根据compat合并,然后将非compat重设为默认值。@schlamar这是我知道的唯一方法。我不会称之为虚拟合并。这是一个非常重要的合并:您正在告诉Mercurial“不要将这些更改带入此分支”。我们经常在我的工作场所这样做。我不知道你所说的“将非compat重设为默认值”是什么意思。这有一个缺点:compat分支(显然)是一个不推荐使用的分支,因此它最终将在将来消失。当我们现在通过剥离过时的分支来重构存储库时,只剩下两个分支,这在现在没有任何意义。因此,如果有一天其中一个分支被剥离,那么维护两个分支就更好了。你不会剥离分支。您只需关闭它,并在它合并到默认值后关闭最新的分支。