Version control 完全手动Mercurial合并
有没有办法在Mercurial中完全手动控制合并过程 我希望能够选择文件合并的方向,即使是没有冲突的文件。Version control 完全手动Mercurial合并,version-control,mercurial,merge,Version Control,Mercurial,Merge,有没有办法在Mercurial中完全手动控制合并过程 我希望能够选择文件合并的方向,即使是没有冲突的文件。 这可能吗?在工作目录的父版本和另一个版本(默认情况下是存储库中的另一个头)之间始终执行合并 如果要在其他“方向”上合并,可以通过签出特定修订来更改工作目录中的分支: hg update -r [rev] 要查看存储库中有哪些磁头,请运行以下命令: hg heads 或者,如果您正在使用fetch,则可以使用--switch parent选项以另一个方向合并: hg fetch --sw
这可能吗?在工作目录的父版本和另一个版本(默认情况下是存储库中的另一个头)之间始终执行合并 如果要在其他“方向”上合并,可以通过签出特定修订来更改工作目录中的分支:
hg update -r [rev]
要查看存储库中有哪些磁头,请运行以下命令:
hg heads
或者,如果您正在使用fetch
,则可以使用--switch parent
选项以另一个方向合并:
hg fetch --switch-parent
您不能逐个文件更改合并方向,因为Mercurial使用的变更集会影响整个存储库,而不是跟踪对单个文件(如CVS)的更改。在合并配置中关闭“预合并”。然后一切都算作冲突,您可以为每个文件更改选择“左”或“右”
[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自动合并。对于kdiff3,必须添加选项--qall
(请参阅)。不使用此键将自动合并一些冲突(如“合并”菜单中的“自动解决简单冲突”)。因此,更合适的命令行是:
[ui]
merge = kdiff3
[merge-tools]
kdiff3.premerge = False
kdiff3.args=$base $local $other -o $output --L1 base --L2 local --L3 other --qall
我看他接受了你的回答,但我不认为这是他问的。您告诉他如何为所有非冲突选择“左”或“右”,但如果他想要混合和匹配,他需要在启动合并工具之前关闭内部“预合并”。+1因为我为此苦苦挣扎了半个小时,您是第一个建议删除
--auto
参数的人。我要花很长时间才能找到它(因为我已经错过了所有其他需要手动合并的时间)。现在,你可以尝试hg merge--tool internal:prompt
,它可能会帮助别人,因为上面和下面的代码片段都没有帮助我。我添加了[ui]->merge=internal:merge
,在合并失败后,它完全禁用了解析工具。事实上,在我更新了Mercurial版本后,讨厌的工具开始出现了。