如何配置kdiff3而不是作为gitmergetool出现



我在mac OSX Snow Leopard上有Git,我试图编辑我的合并和差异工具,使用kdiff3而不是emerge。

但当我尝试使用它时,它不会启动kdiff的GUI,而是让我使用基于cmd的界面。

我在gitconfig中的设置是:

[merge]
     tool = kdiff3
[mergetool "kdiff3"]
    cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3
    args = $base $local $other -o $output
    trustExitCode = false
[diff]
tool = kdiff3
[difftool "kdiff3"]
cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3
args = $base $local $other -o $output
trustExitCode = false

显然少了一些东西,但我做错了什么?

最近的Git版本内置了对kdiff3的支持,因此无需使用通用的cmdargs设置手动配置。相反:

$ git config --global merge.tool kdiff3

如果kdiff3不在PATH环境中,也要执行:

$ git config --global mergetool.kdiff3.path /Applications/kdiff3.app/Contents/MacOS/kdiff3

这使得git mergetool启动kdiff3。请注意,没有办法将Git配置为在发生冲突的手动合并后自动启动合并工具。

如果您真的想了解Git是如何在内部调用kdiff3的,请查看kdiff3的内置mergetool配置。

编辑:对于现在也支持Mac OS X的Beyond Compare 4,只需将kdiff3bc3(是的,"3")交换,并调整以上行中的路径。从Git 2.2.0开始,您将能够使用bc作为bc3的别名,这样您就不必关心版本号了。

最近的Git版本内置了对kdiff3 的支持

是的,但只有Git 2.12(2017年第一季度)允许这些内置工具信任它们的退出代码。

参见David Aguilar(davvid)的提交2967284,提交7c10605(2016年11月29日)
(由Junio C Hamano合并——gitster——提交c4a44e2,2016年12月16日)

mergetool:向内置工具的mergetool.$tool.trustExitCode致敬

内置的合并工具包含一个硬编码的假设,即是否可以信任工具的退出代码来确定合并的成功或失败
退出代码不受信任的工具在其merge_cmd()函数中包含对check_unchanged()的调用。

这样做的一个问题是内置工具不遵守trustExitCode配置。

教导内置工具遵守trustExitCode配置。

(参见kdiff3

扩展run_merge_cmd(),使其负责在工具的退出代码不可信时调用check_unchanged()
从scriptlet中删除check_unchanged()调用,因为它们不再负责调用它。

相关内容

  • 没有找到相关文章

最新更新