2009-12-18 6 views
0

Selon doc et diverses réponses, git difftool appelle l'exécutable spécifié (généralement un script shell) avec les variables d'environnement LOCAL et REMOTE définies sur les chemins de fichier. Mais quand j'essaye, LOCAL et REMOTE ne sont pas réglés. J'ai essayé le test suivant:Problème difftool git: ne pas définir les variables LOCAL, REMOTE

git config --global diff.tool mytest 
git config --global difftool.mytest.cmd mytest.sh 
git config --global difftool.prompt false 

avec mytest.sh:

#!/bin/sh 
echo "LOCAL:$LOCAL REMOTE:$REMOTE" 

invocation:

git difftool --tool mytest <commitid> -- <path-to-file> 

sortie:

LOCAL: REMOTE: 

Toutes les suggestions?

Répondre

4

Ce que signifie la page de manuel est ce difftool. <outil> .cmd peut avoir $LOCAL et $REMOTE dans sa ligne de commande. Ceux-ci seront remplacés par les chemins de fichiers pertinents. Il n'est pas prévu que ces variables soient exportées dans votre environnement. Pour illustrer avec un exemple, voici une version retravaillée de votre installation d'origine.

git config --global diff.tool mytest 
git config --global difftool.mytest.cmd 'mytest.sh $LOCAL $REMOTE' 
git config --global difftool.prompt false 
+0

Merci beaucoup! –

0

C'est l'emballage diff je l'ai toujours utilisé (avec 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" 

qui utilise des paramètres plutôt que $LOCAL et $REMOTE.

+1

J'ai essayé cela, $ 1, $ 2, etc. ne sont pas non plus définis. Quoi qu'il en soit des docs cette invocation est utilisée pour "git diff" configuré avec un outil externe, pas pour "git difftool" –

Questions connexes