En Mercurial, se puede definir un patrón de diferenciación externo y combinar herramientas (por lo que se llaman sólo para los archivos que coincidan con el patrón especificado):Git: configurar patrones de difftool y mergetool
[diff-patterns]
**.ext = difftool
[merge-patterns]
**.ext = mergetool
cómo definir tales patrones en Git?
[mergetool] sección en git-config (1) no menciona ningún patrón, máscara o similar.
EDITAR:
Aquí es una parte importante 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 archivos.
Quiero que mi difftool y mergetool a ser llamados única para los archivos con nombres que terminan con .ext
EDITAR:
He añadido un archivo .git/info/atributos con el siguiente contenido :
*.ext diff=difftool
*.ext merge=mergetool
también he añadido
[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 funciono
git difftool
que llama KDiff3 en lugar de 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 el difftool, será obvio para mí cómo configurar mergetool.
EDITAR:
Difftool ahora trabaja.
.git/config:
[diff "difftool"]
command = difftool.git.sh
.git/información/atributos:
.ext diff=difftool
difftool.git.sh (en PATH)
#!/bin/sh
difftool.jar "$2" "$5"
Pero hay una efecto secundario en Windows: git diff
ahora resulta en APPCRASH.
EDITAR:
he descubierto la manera de evitar que se caiga o colgando de git diff
: uno debe utilizar git difftool
o llame git diff
través sh
: sh -c "git diff"
¿Se aplica lo mismo al controlador diff? No pude lograr que funcione. Realmente necesito una muestra simple. – utapyngo