我正在尝试让我的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)
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)
简单的答案是,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)
让它工作得很好。
| 归档时间: |
|
| 查看次数: |
6095 次 |
| 最近记录: |