De acuerdo con el documento y varias respuestas aquí, git difftool invocará el ejecutable especificado (generalmente un script de shell) con las variables de entorno LOCAL y REMOTE configuradas en las routes de files. Pero cuando bash, LOCAL y REMOTO no están configurados. Probé la siguiente testing:
git config --global diff.tool mytest git config --global difftool.mytest.cmd mytest.sh git config --global difftool.prompt false
con mytest.sh:
#!/bin/sh echo "LOCAL:$LOCAL REMOTE:$REMOTE"
invocar:
git difftool --tool mytest <commitid> -- <path-to-file>
salida:
LOCAL: REMOTE:
¿Alguna sugerencia?
Lo que significa la página man es que difftool. <Tool> .cmd puede tener $LOCAL
y $REMOTE
en su command-line. Esos serán reemplazados con las routes de files relevantes. No se pretende que esas variables se exporten a su entorno.
Para demostrar con un ejemplo, aquí hay una versión reelaborada de su configuration original.
git config --global diff.tool mytest git config --global difftool.mytest.cmd 'mytest.sh $LOCAL $REMOTE' git config --global difftool.prompt false
Esta es la envoltura de diff que siempre he usado (con tkdiff):
#!/bin/sh # diff is called with 7 parameters: # path old-file old-hex old-mode new-file new-hex new-mode tkdiff "$2" "$5"
Que usa parameters en lugar de $LOCAL
y $REMOTE
.