19

有什么方法可以完全手动控制 Mercurial 中的合并过程?

我希望能够选择文件合并的方向,即使是没有冲突的文件。那可能吗?

4

4 回答 4

20

在合并配置中关闭“预合并”。然后一切都算作冲突,您可以为每个文件更改选择“左”或“右”。

[merge-tools]
mymergetool.premerge = False

来自Mercurial wiki 上的 MergeToolConfiguration

于 2009-04-02T05:02:35.870 回答
12

以这种方式编辑您的配置文件:

[ui]
merge = kdiff3

[merge-tools]
kdiff3.premerge = false
kdiff3.args=--L1 base --L2 local --L3 other $base $local $other -o $output

默认情况下,它将--auto参数放在 kdiff3 上,因此 kdiff3 自动合并。

于 2010-06-25T20:37:36.527 回答
2

总是在工作目录的父版本和另一个版本之间执行合并,默认情况下是您存储库中的另一个头。

如果你想合并到另一个“方向”,你可以通过检查一个特定的修订来改变你的工作目录中的哪个分支:

hg update -r [rev]

要查看存储库中有哪些头,请运行以下命令:

hg heads

或者,如果您正在使用,fetch您可以使用--switch-parent选项在另一个方向合并:

hg fetch --switch-parent

您不能逐个文件更改合并的方向,因为 Mercurial 使用影响整个存储库的变更集,而不是通过跟踪对单个文件(如 CVS)的更改。

于 2009-03-26T10:17:17.010 回答
1

在 KDiff3 的情况下,添加选项至关重要--qall(请参阅http://kdiff3.sourceforge.net/doc/documentation.html)。没有这个键会自动合并一些冲突(比如“合并”菜单中的“自动解决简单冲突” )。因此更合适的命令行是:

[ui]
merge = kdiff3

[merge-tools]
kdiff3.premerge = False
kdiff3.args=$base $local $other -o $output --L1 base --L2 local --L3 other --qall
于 2018-02-05T15:01:37.350 回答