Git: настройка шаблонов для difftool и mergetool

В Mercurial можно определить шаблон для внешних инструментов сравнения и слияния (чтобы они вызывались только для файлов, соответствующих указанному шаблону):

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

Как определить такие шаблоны в Git?

В разделе [mergetool] в git-config (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 и mergetool называлисьтолько для файлов с именами, заканчивающимися на.ext

РЕДАКТИРОВАТЬ:

Я добавил файл .git / info / attribute со следующим содержимым:

*.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

Он вызывает KDiff3 вместо моего difftool. Что я делаю не так?

Примечание:Я играю с 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 черезsh: sh -c "git diff"

Ответы на вопрос(1)

Ваш ответ на вопрос