2013-02-26 56 views
3

爲了與發佈在互聯網上的一些解決方案保持一致,我已經安裝了KDiff3並修改瞭如下的.gitconfig以利用它。儘管如此,當我在存儲庫中運行git diff HEAD^ HEAD來測試它時,我會得到由默認工具執行的差異。我在Windows7-64上運行cygwin git。任何人都可以解釋爲什麼KDiff3不被調用?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 
+0

各個部件在哪裏運行?這是Cygwin的全部(我希望!)?部分原生Windows應用程序,如果是的話,哪些? – AlG 2013-02-26 20:12:41

+0

是的,它在cygwin中運行,請參閱jturney對我所在位置的迴應。 – lovelyzoo 2013-02-28 11:33:31

回答

2

使用git difftool調用配置差異的工具,而不是git diff

既然你似乎可以用Cygwin的混帳,但本地kdiff3,你可能還需要調用一個包裝腳本,而不是直接kdiff3,使用cygpath轉換路徑從Cygwin的形式到原始形式。

+0

... [和谷歌很快找到這樣一個腳本的例子](http://noamlewis.wordpress.com/2011/03/22/how-to-use-kdiff3-as-a-difftool-mergetool-with -cygwin-git /) – jturney 2013-02-26 20:23:56

+0

這樣做的結果是: 查看:'file.py' 啓動'kdiff3'[是/否]:是 之後該工具不會啓動,我把它包裝器將解決此問題? – lovelyzoo 2013-02-26 20:44:34

+0

使用kdiff3路徑的窗體似乎不太可行。你有沒有使用包裝腳本? – jturney 2013-02-27 12:07:23

3

實際上,不需要包裝腳本。如果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 
1
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

這項工作很好on cywin 64bit