Configuración de múltiples gits Mergetool y diffmool para que la herramienta apropiada se elija en función de la extensión
-
26-12-2019 - |
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
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.