Git: customize templates for diffftool and mergetool

In Mercurial, you can define a template for external diff and merge tools (so that they are called only for files matching the specified template):

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

How to define such patterns in Git?

Section

[mergetool] in git -config (1) does not mention any template, mask or any similar.

EDIT

Here is the important part of my .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"

Now it works for all files.

I want my diffftool and mergetool to be named only for files ending in.ext

EDIT

I added a .git / info / attributes file with the following contents:

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

I also added

[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

in my .git / config.

Now i run

git difftool

It calls KDiff3 instead of my diffftool. What am I doing wrong?

. diffftool mergetool, , , diffftool, , 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"

+5
1

gitattributes .

. , git ?"

*.ext merge=mymergetool

gitattributes.

+4

All Articles