проблема git difftool: не заданы МЕСТНЫЕ, УДАЛЕННЫЕ переменные - PullRequest
1 голос
/ 18 декабря 2009

В соответствии с doc и различными ответами здесь git difftool будет вызывать указанный исполняемый файл (обычно скрипт оболочки) с переменными окружения LOCAL и REMOTE, установленными в пути к файлам. Но когда я пытаюсь, LOCAL и REMOTE не установлены. Я пробовал следующий тест:

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

с mytest.sh:

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

вызывая:

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

вывод:

LOCAL: REMOTE:  

Есть предложения?

Ответы [ 2 ]

4 голосов
/ 18 декабря 2009

Справочная страница означает, что difftool. .cmd может содержать $LOCAL и $REMOTE в командной строке. Они будут заменены соответствующими путями к файлам. Предполагается, что эти переменные не будут экспортированы в вашу среду.

Чтобы продемонстрировать на примере, вот переработанная версия вашей первоначальной настройки.

git config --global diff.tool mytest  
git config --global difftool.mytest.cmd 'mytest.sh $LOCAL $REMOTE'
git config --global difftool.prompt false
0 голосов
/ 18 декабря 2009

Это оболочка diff, которую я всегда использовал (с 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"

Который использует параметры вместо $LOCAL и $REMOTE.

...