Git: configura patrones para difftool y mergetool

En Mercurial, uno puede definir un patrón para las herramientas externas de fusión y fusión (de modo que se llamen solo para los files que coincidan con el patrón especificado):

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

¿Cómo definir tales patrones en Git?

La sección [mergetool] en git-config (1) no menciona ningún patrón, máscara o similar.

EDITAR :

Aquí hay una parte relevante de mi .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" 

Ahora funciona para todos los files.

Quiero que mi difftool y mergetool sean llamados solo para files con nombres que terminen en .ext

EDITAR :

He agregado un file .git / info / attributes con los siguientes contenidos:

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

También he agregado

 [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 

a mi .git / config.

Ahora corro

 git difftool 

Llama a KDiff3 en lugar de a mi difftool. ¿Qué hago mal?

Observación: Estoy jugando con difftool en lugar de mergetool porque es más fácil de probar y creo que si logro configurar difftool, será obvio para mí cómo configurar mergetool.

EDITAR :

Difftool ahora funciona.

.git / config:

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

.git / info / attributes:

 .ext diff=difftool 

difftool.git.sh (en RUTA)

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

Pero hay un efecto secundario en Windows: git diff ahora da como resultado APPCRASH.

EDITAR :

He descubierto cómo evitar colgar o colgar git diff : uno debe usar git difftool o llamar a git diff través de sh : sh -c "git diff"

Utilizaría un controller de combinación en un file de gitattributes .

Ver por ejemplo " ¿Cómo le digo a git que siempre select mi versión local para las fusiones en conflicto en un file específico? "

 *.ext merge=mymergetool 

Puede usar patrones en un file de gitattributes.