【问题标题】:KDiff3 under cygwin git will not invokecygwin git下的KDiff3不会调用
【发布时间】:2013-02-12 08:56:18
【问题描述】:

为了与互联网上发布的许多解决方案保持一致,我安装了 KDiff3 并修改了.gitconfig,如下所示以使用它。尽管如此,当我在存储库中运行git diff HEAD^ HEAD 来测试它时,我得到了一个由默认工具执行的差异。我在 Windows7-64 上运行 cygwin git。谁能解释为什么不调用KDiff3?

[diff]
    tool = kdiff3
[merge]
    tool = kdiff3

[difftool "kdiff3"]
    path = \"D:/Program Files (x86)/KDiff3/kdiff3.exe\"
    keepBackup = false
    trustExitCode = false

[mergetool "kdiff3"]
    path = \"D:/Program Files (x86)/KDiff3/kdiff3.exe\"
    keepBackup = false
    trustExitCode = false

【问题讨论】:

  • 各个部分在哪里运行?这就是 Cygwin 中的全部(我希望!)?部分是本机 Windows 应用程序吗?如果是,是哪个?
  • 是的,它在 cygwin 中运行,请参阅 jturney 的回复了解我要去的地方。

标签: git cygwin kdiff3


【解决方案1】:

实际上,不需要包装脚本。如果 kdiff3.exe 不在您的路径中,您需要在 cmd 中提供完整路径为cmd = /cygdrive/c/apps/KDiff3/kdiff3 ...

我的 .gitconfit

[diff]
    tool = kdiff3
[merge]
    tool = kdiff3
[difftool "kdiff3"]
    cmd = kdiff3 \"$(cygpath -wla $LOCAL)\" \"$(cygpath -wla $REMOTE)\"
    trustExitCode = false
[mergetool "kdiff3"]
    cmd = kdiff3 \"$(cygpath -wla $BASE)\" \"$(cygpath -wla $LOCAL)\" \"$(cygpath -wla $REMOTE)\" -o \"$(cygpath -wla $MERGED)\"
    keepBackup = false
    trustExitCode = false
[mergetool]
    prompt = false
[difftool]
    prompt = false

【讨论】:

    【解决方案2】:

    使用git difftool 调用配置的差异工具,而不是git diff

    由于您似乎使用的是 cygwin git,但使用的是原生 kdiff3,您可能还需要调用包装脚本,而不是直接调用 kdiff3,以使用 cygpath 将路径从 cygwin 形式转换为原生形式。

    【讨论】:

    • 这样做会导致: Viewing: 'file.py' Launch 'kdiff3' [Y/n]: Y 之后工具不会启动,我认为包装器会解决这个问题?
    • 使用windows形式的kdiff3路径似乎不太可能工作。您是否尝试过使用包装脚本?
    • 好的,我已经用包装脚本试过了。我仍然收到 Launch 'kdiff3' 提示。我回复 Y。一旦我这样做了,回复是:“差异工具 kdiff3 不能作为 '~/bin/kdiff3.sh' 使用”。注意在命令行调用~/bin/kdiff3.sh成功启动Kdiff。
    • 嗯.. 页面似乎不太正确,you can't put ~ in a .gitconfig file,所以将其替换为 /home/jon 或您的 $HOME 目录。
    【解决方案3】:
    git config --global merge.tool kdiff3
    git config --global mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
    git config --global mergetool.kdiff3.keepbackup=false
    git config --global mergetool.kdiff3.trustexitcode=false
    

    请检查配置:git config --global -l

    这在 cywin 64bit 上运行良好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 2013-04-03
      • 1970-01-01
      相关资源
      最近更新 更多