Проблема git difftool: не заданы МЕСТНЫЕ, УДАЛЕННЫЕ переменные
В соответствии с 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 ответа
Страница man означает, что difftool.$LOCAL
а также $REMOTE
в его командной строке. Они будут заменены соответствующими путями к файлам. Не предполагается, что эти переменные экспортируются в вашу среду.
Чтобы продемонстрировать на примере, вот переделанная версия вашей первоначальной настройки.
git config --global diff.tool mytest
git config --global difftool.mytest.cmd 'mytest.sh $LOCAL $REMOTE'
git config --global difftool.prompt false
Это оболочка 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
,