有没有办法对Mercurial中的合并过程进行完全手动控制?
我希望能够选择文件合并的方向,即使对于没有冲突的文件也是如此。 这可能吗?
答案 0 :(得分:20)
在合并配置中关闭“预合并”。然后一切都算作冲突,您可以为每个文件更改选择“左”或“右”。
[merge-tools]
mymergetool.premerge = False
答案 1 :(得分: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自动合并。
答案 2 :(得分:2)
总是在工作目录的父修订版和另一个修订版之间执行合并,默认情况下是存储库中的另一个版本。
如果要合并到另一个“方向”,可以通过签出特定修订来更改工作目录中的哪个分支:
hg update -r [rev]
要查看存储库中的哪个头,请运行以下命令:
hg heads
或者,如果您使用的是fetch
,则可以使用--switch-parent
选项合并到另一个方向:
hg fetch --switch-parent
您无法逐个文件地更改合并的方向,因为Mercurial使用影响整个存储库的变更集,而不是跟踪对CVS等单个文件的更改。
答案 3 :(得分: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