有什么方法可以完全手动控制 Mercurial 中的合并过程?
我希望能够选择文件合并的方向,即使是没有冲突的文件。那可能吗?
在合并配置中关闭“预合并”。然后一切都算作冲突,您可以为每个文件更改选择“左”或“右”。
[merge-tools]
mymergetool.premerge = False
以这种方式编辑您的配置文件:
[ui]
merge = kdiff3
[merge-tools]
kdiff3.premerge = false
kdiff3.args=--L1 base --L2 local --L3 other $base $local $other -o $output
默认情况下,它将--auto
参数放在 kdiff3 上,因此 kdiff3 自动合并。
总是在工作目录的父版本和另一个版本之间执行合并,默认情况下是您存储库中的另一个头。
如果你想合并到另一个“方向”,你可以通过检查一个特定的修订来改变你的工作目录中的哪个分支:
hg update -r [rev]
要查看存储库中有哪些头,请运行以下命令:
hg heads
或者,如果您正在使用,fetch
您可以使用--switch-parent
选项在另一个方向合并:
hg fetch --switch-parent
您不能逐个文件更改合并的方向,因为 Mercurial 使用影响整个存储库的变更集,而不是通过跟踪对单个文件(如 CVS)的更改。
在 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