2011-09-13 9 views
5

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"

Respuesta

Cuestiones relacionadas