All:
我想使用 kdiff 合并具有特定后缀(例如 *.c、*.h)的所有文件,并且我想对具有另一个后缀(例如 *.c、*.h)的所有文件做两件事(关闭预合并并使用内部:其他)。 mdl)。这样做的目的是允许我对特定文件类型使用一种“破坏合并”(即:不可合并的文件,如配置、自动生成的 C、模型等......)
在我的 .hgrc 中我尝试过:
[merge-tools]
kdiff3=
clobbermerge=internal:other
clobbermerge.premerge = False
[merge-patterns]
**.c = kdiff3
**.h = kdiff3
**.mdl = clobbermerge
但它仍然会触发所有文件的 kdiff3 。想法?
其扩展是在目录上执行“破坏合并” - 但是一旦文件后缀的语法清晰,目录就应该很容易。
合并工具可以使用任何可执行文件。设置始终覆盖的合并工具$base
with $other
,您可以使用以下内容:
[merge-tools]
clobbermerge.priority = 100
clobbermerge.premerge = False
clobbermerge.args = $other $output
clobbermerge.executable = <copy executable>
在 Windows 上使用此策略时,存在一个问题。你不能简单地替换<copy executable>
与copy
外壳命令。由于某种原因,Mercurial 无法在此上下文中找到 shell 命令。我还没有在 *nix 上尝试过这个。
要解决此问题,您可以创建一个分发执行复制的批处理文件。它只需要运行:copy %1 %2
。一旦放置在您的 PATH 中,您就可以设置clobbermerge.executable=clobber.bat
.
如果您安装了 kdiff3(在 Windows 上随 TortoiseHg 一起提供),则无需使用外部批处理文件,使用如下配置即可获得相同的结果:
[merge-tools]
clobbermerge.priority = 100
clobbermerge.premerge = False
clobbermerge.args = --auto $base $other $other -o $output
clobbermerge.executable = kdiff3
这个配置的关键是args
field:
-
--auto
:告诉 kdiff3 如果没有冲突就不要打开 GUI
-
$base $other $other
: 告诉 kdiff3 仅使用$other
-
$output
:告诉 kdiff3 输出文件的名称
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)