2011-09-13 77 views
5

在水銀,可以定義爲外部DIFF模式和(僅用於匹配指定的模式文件,以便它們的稱呼)合併工具:混帳:爲difftool配置模式和合並工具

[diff-patterns] 
**.ext = difftool 
[merge-patterns] 
**.ext = mergetool 

如何定義這種模式在Git?

[合併工具]在GIT-配置部分(1)沒有提到任何圖案,掩模或類似點兒。

編輯

這裏是我的.git/config中的相關部分:

[diff] 
    tool = difftool 
[difftool "difftool"] 
    cmd = difftool.git.sh "$LOCAL" "$REMOTE" "$BASE" 

[merge] 
    tool = mergetool 
[mergetool "mergetool"] 
    cmd = mergetool.git.sh "$LOCAL" "$REMOTE" "$BASE" "$MERGED" 

現在,它適用於所有文件。

我希望我的difftool和合並工具被稱爲僅的文件與.ext

編輯結尾的名稱:

我添加了一個文件的.git /信息/用以下內容屬性:

*.ext diff=difftool 
*.ext merge=mergetool 

我還添加了

[diff "difftool"] 
    name = my custom diff driver 
    driver = difftool.git.sh %A %B %O 
[merge "mergetool"] 
    name = my custom merge driver 
    driver = mergetool.git.sh %A %B %O %A 

我的.git/config。

現在我跑

git difftool 

它調用,而不是我的difftool KDiff3。我做錯了什麼?

備註:我使用difftool而不是mergetool,因爲它更容易測試,我相信如果我設法配置difftool,那麼配置mergetool將會很明顯。

編輯

Difftool現在的作品。

的.git /配置:

[diff "difftool"] 
    command = difftool.git.sh 

的.git /信息/屬性:

.ext diff=difftool 

difftool.git.sh(在PATH)

#!/bin/sh 
difftool.jar "$2" "$5" 

但是有一個Windows上的副作用:git diff現在導致APPCRASH。

編輯

我想通了如何避免碰撞或懸掛的git diff:應該使用git difftool或致電git diff通過shsh -c "git diff"

回答