TLDR; Новое сообщение об ошибке "This message is displayed because 'diff.tool' is not configured.
" может быть фактическим исправлением ошибки, а не новой ошибкой.
Я только что попробовал и ... не получил никакого сообщения об ошибке (при использовании без параметров).
vonc@vonvb:~/git/cplgit/linux$ ./set_git 2.22.0
git set to v2.22.0
vonc@vonvb:~/git/cplgit/linux$ git version
git version 2.22.0
vonc@vonvb:~/git/cplgit/linux$ git config -l|grep -i tool
vonc@vonvb:~/git/cplgit/linux$ git difftool
Кроме того, это сообщение об ошибке было введено в commit 5338a6a, январь 2013 г., Git v1.8.2-rc0 .
Я упоминал commit 05fb872 из Git 2.22 , который использует ${GIT_MERGETOOL_GUI}
.
Эта переменная окружения не установлена на моем компьютере, и я не получаю никаких сообщений об ошибках.
Проверьте свои git config
и переменные окружения.
Я вижу сообщение об ошибке в Git 2.22 с:
vonc@vonvb:~/gits/src/git$ git difftool --no-index color.c color.h
This message is displayed because 'diff.tool' is not configured.
See 'git difftool --tool-help' or 'git help config' for more details.
'git difftool' will now attempt to use one of the following tools:
meld opendiff kdiff3 tkdiff xxdiff kompare gvimdiff diffuse diffmerge ecmerge p4merge araxis bc codecompare smerge emerge vimdiff
Viewing (1/1): 'color.c'
Launch 'bc' [Y/n]?
The diff tool bc is not available as 'bcompare'
fatal: external diff died, stopping at color.c
При использовании Git 2.21.0 по умолчанию используется обычный git diff
:
vonc@vonvb:~/git/cplgit/linux$ ./set_git 2.21.0
git set to v2.21.0
vonc@vonvb:~/git/cplgit/linux$ git version
git version 2.21.0
vonc@vonvb:~/git/cplgit/linux$ cdgg
vonc@vonvb:~/gits/src/git$ git difftool --no-index color.c color.h
diff --git a/color.c b/color.h
index ebb222ec33..98894d6a17 100644
Из ветки списка рассылки OP Git :
Дентон Лю определяет оригинал коммит 287ab28 (16 февраля 2019 г.) Джефф Кинг (peff
) .
(Объединено Junio C Hamano - gitster
- in commit 12e5bdd , 07 Mar 2019)
diff
: повторно использовать настройку diff для --no-index
case
Когда действует «--no-index
» (или подразумевается аргументами), git-diff
рано выполняет переход к специальному пути кода для выполнения этого сравнения.
Это означает, что мы пропускаем некоторые настройки, такие как включение --ext-diff
и --textconv
по умолчанию.
Джефф Кинг отвечает :
Я не знаю много о том, как git-difftool
работает, но похоже,
комплекты GIT_EXTERNAL_DIFF=git-difftool--helper
.
До 287ab28bfa мы бы не уважали никаких внешних различий
команда при запуске git-diff
. Но после этого мы делаем.
В случае, если пользователь не предоставил --no-index
, то это все
работает так, как мне кажется, difftool
предназначено: запускает помощника и говорит "эй,
Вы не настроили это ".
Похоже, поведение вышеупомянутой команды до 287ab28bfa было
не преднамеренно.
Он будет запускать git-diff
, ожидая, что он вызовет помощника, но никогда не срабатывал (а вместо этого просто делал обычный no-index diff
).
Так что похоже, что новое поведение на самом деле правильное, так как оно делает случай --no-index
соответствующим обычному?
Мне не совсем понятно, зачем вы запускаете здесь "difftool
", если это не так
настроен, и вы просто хотите прямой diff
выход.