2009-12-18 3 views
0

В соответствии с документом и различными ответами здесь git difftool выведет указанный исполняемый файл (обычно скрипт оболочки) с переменными среды LOCAL и REMOTE, установленными в пути к файлам. Но когда я пытаюсь, LOCAL и REMOTE не установлены. Я пробовал следующий тест:Проблема с git diffftool: не задается 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: 

Любые предложения?

ответ

4

Что означает страница man, это diffftool. < инструмент > .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

Большое спасибо! –

0

Это дифф обертка Я всегда использовал (с 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.

+1

Я пробовал, что, $ 1, $ 2 и т. Д. Также не установлены. В любом случае из документов, для которых invoke используется для «git diff», настроенного с помощью внешнего инструмента, а не для «git difftool» –

Смежные вопросы