Cygwin Git:合并工具kdiff3不可用

Mik*_*low 5 git cygwin kdiff3

我正在尝试让我的cygwin git安装与kdiff3一起工作.

我跟随Noam Lewis的指示:http://noamlewis.wordpress.com/2011/03/22/how-to-use-kdiff3-as-a-difftool-mergetool-with-cygwin-git/

但它不起作用:(

运行

 git mergetool -t kdiff3
Run Code Online (Sandbox Code Playgroud)

给出这个结果:

Normal merge conflict for ...
  {local}: modified file
  {remote}: modified file
Hit return to start merge resolution tool (kdiff3):
The merge tool kdiff3 is not available as '~/kdiff3.sh'
Run Code Online (Sandbox Code Playgroud)

但是,跑步

~/kdiff3.sh
Run Code Online (Sandbox Code Playgroud)

按预期打开kdiff3.

这是我的.gitconfig:

[diff]
        tool = kdiff3
[merge]
        tool = kdiff3
[mergetool "kdiff3"]
        path = ~/kdiff3.sh
        keepBackup = false
        trustExitCode = false
Run Code Online (Sandbox Code Playgroud)

kdiff3.sh

#!/bin/sh
RESULT=""
for arg
  do
    if [[ "" != "$arg" ]] && [[ -e $arg ]];
      then
        OUT=`cygpath -wa $arg`
      else
        OUT=$arg
      if [[ $arg == -* ]];
        then
          OUT=$arg
        else
          OUT="'$arg'"
      fi
    fi
    RESULT=$RESULT" "$OUT
  done
/cygdrive/c/Program\ Files\ \(x86\)/KDiff3/kdiff3.exe $RESULT
Run Code Online (Sandbox Code Playgroud)

E.L*_*.L. 6

wrap shell脚本不是必需的.我正在使用安装在windows中的kdiff3并在path中设置其文件夹并在cygwin中设置git.如果没有为kdiff3设置路径,则需要在cmd中给出完整路径cmd = /cygdrive/c/apps/KDiff3/kdiff3 ...

[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
Run Code Online (Sandbox Code Playgroud)


Mik*_*low 3

简单的答案是,git 配置文件中不能有“~”(显然)。

所以替换这一行:

[mergetool "kdiff3"]
    path = ~/kdiff3.sh
Run Code Online (Sandbox Code Playgroud)

有了这个:

[mergetool "kdiff3"]
    path = /home/mike.hadlow/kdiff3.sh
Run Code Online (Sandbox Code Playgroud)

让它工作得很好。