Configuración de múltiples gits Mergetool y diffmool para que la herramienta apropiada se elija en función de la extensión

StackOverflow https://stackoverflow.com//questions/25069455

Pregunta

Cuando hago git diffrool, recursivamente ejecuta DifFool predeterminado para todos los archivos.Escribí un script para elegir DifFool adecuado basado en la extensión y llamo a git difftool -t mytool en el script.DifFTool redirige todos los argumentos a una nueva llamada, que es buena.Sin embargo, también redirige todos los nombres de los archivos.Así que, básicamente, mi guión se vuelve inútil, ya que se pasa a DifFool personalizada con todos los archivos que se cambian.

Lo que quiero hacer es, limitar difFTOOL a un archivo, o al menos llamar a mi difTeol con un archivo, no el resto.Básicamente, este es mi script y tengo esto como el DifFool predeterminado en .gitconfig.

if is_sbs $1 $2 ; then
    #custom difftool which is also defined in .gitconfig
    git dt -t rhapsody 
else
    #for all files
    git dt -t kdiff3 
fi

¿Fue útil?

Solución

Aparentemente, git Tubos intrínsecamente Tubos Toda la información del archivo y no se muestra en los argumentos al guión.En lugar de definir otras herramientas de diferencia como "diffool" s en .gitconfig, acabo de realizar una llamada al archivo ejecutable con argumentos apropiados.La solución completa es la siguiente:

.gitconfig

[difftool]
    prompt = false
[mergetool]
    prompt = false
[difftool "selectiveDiff"]
    cmd = difftool.sh $LOCAL $REMOTE $BASE $MERGED
    keepBackup = false
[mergetool "selectiveMerge"]
    cmd = mergetool.sh $LOCAL $REMOTE $BASE $MERGED
    keepBackup = false

Por favor, tenga en cuenta que los scripts deben estar en la ruta.Crea un directorio y agréguelo a su camino o use uno que ya esté en la ruta.

Definir variables en algún lugar

RHAPSODY_PATH="C:/Program Files (x86)/IBM/Rational/Rhapsody/8.0.5/DiffMerge.exe"
KDIFF3_PATH="C:/Program Files/KDiff3/kdiff3.exe"

difftool.sh

if is_sbs $1 $2 ; then
    "$RHAPSODY_PATH" -base $3 $1 $2 -xcompare 
else
    "$KDIFF3_PATH" $1 $2
fi

Mergetool.sh

if is_sbs $1 $2 ; then
    #DiffMerge.exe -base BASE FILE1 FILE2 -out OUTPUT -xmerge
    "$RHAPSODY_PATH" -base $3 $1 $2 -out $4 -xmerge
else
    #kdiff3 BASE FILE1 FILE2 -o OUTPUT
    "$KDIFF3_PATH" $3 $1 $2 -o $4
fi

Elegirá la herramienta DIFT DRUS DIFT y MERGE en llamadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top