Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial中的兼容性合并工作流_Mercurial_Merge - Fatal编程技术网

Mercurial中的兼容性合并工作流

Mercurial中的兼容性合并工作流,mercurial,merge,Mercurial,Merge,除了“default”之外,我的存储库中还有一个“compat”分支,用于支持Python的旧版本。所以默认的工作流程是我在“default”中实现特性,合并到“compat”并修复所有兼容性问题。这是一个典型的补丁工作流程,效果非常好 但是,如果我想引入一些不应该出现在“compat”中的更改(例如,在旧版本中不起作用的功能),该怎么办呢。为了不破坏我的默认工作流,我必须合并“default”,然后撤销所有不应该在这个分支中的变更集 有没有更好的方法来处理这个问题(不会破坏我的默认工作流程)?

除了“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分支(显然)是一个不推荐使用的分支,因此它最终将在将来消失。当我们现在通过剥离过时的分支来重构存储库时,只剩下两个分支,这在现在没有任何意义。因此,如果有一天其中一个分支被剥离,那么维护两个分支就更好了。你不会剥离分支。您只需关闭它,并在它合并到默认值后关闭最新的分支。