Git — Verbose Mode: Debug Fatal Errors

Иногда в Git может быть сложно сделать debug какой-то ошибки, как например «fatal: repository not found» или «fatal: authentication failed«, принимая во внимания низкий уровень детализации сообщений в Git по умолчанию.

Чтобы сделать отладку разных проблем в Git, связанных с сетью, безопасностью, производительностью и прочими вещами, очень полезно знать, как увеличить уровень детализации логов.

В этой заметке я покажу, как отлаживать проблемы с Git из командной строки, увеличив количество выводимой информации в Linux, MacOS и Windows.

Дельный Совет: Включение DEBUG и VERBOSITY в Ansible! Читать далее →

Отладка Git в Linux/MacOS

Debug Git-команды:

$ GIT_TRACE=true \
GIT_CURL_VERBOSE=true \
GIT_SSH_COMMAND="ssh -vvv" \
git clone git://host.xz/path/to/repo.git

Debug Git-команды с максимальным уровнем детализации сообщений:

$ GIT_TRACE=true \
GIT_CURL_VERBOSE=true \
GIT_SSH_COMMAND="ssh -vvv" \
GIT_TRACE_PACK_ACCESS=true \
GIT_TRACE_PACKET=true \
GIT_TRACE_PACKFILE=true \
GIT_TRACE_PERFORMANCE=true \
GIT_TRACE_SETUP=true \
GIT_TRACE_SHALLOW=true \
git clone git://host.xz/path/to/repo.git

Отладка Git в Windows

Debug Git-команды:

C:\> set GIT_TRACE=true
C:\> set GIT_CURL_VERBOSE=true
C:\> set GIT_SSH_COMMAND=ssh -vvv
C:\> git clone git://host.xz/path/to/repo.git

Debug Git-команды с максимальным уровнем детализации сообщений:

C:\> set GIT_TRACE=true
C:\> set GIT_CURL_VERBOSE=true
C:\> set GIT_SSH_COMMAND=ssh -vvv
C:\> set GIT_TRACE_PACK_ACCESS=true
C:\> set GIT_TRACE_PACKET=true
C:\> set GIT_TRACE_PACKFILE=true
C:\> set GIT_TRACE_PERFORMANCE=true
C:\> set GIT_TRACE_SETUP=true
C:\> set GIT_TRACE_SHALLOW=true
C:\> git clone git://host.xz/path/to/repo.git

Чтобы избежать следующей ошибки, переменная GIT_SSH_COMMAND=ssh -vvv в Windows CMD должна задаваться без кавычек: «fatal: ssh variant ‘simple’ does not support setting port»

Опции Отладки в Git

Переменные окружения, которые могут использоваться для увеличения уровня детализации сообщений в Git:

Опция Описание
GIT_TRACE=true Включить общее журналирование действий, не подпадающий под какую-либо определённую категорию.
GIT_CURL_VERBOSE=true Выводить HTTP-заголовки (аналог curl -v)
GIT_SSH_COMMAND="ssh -vvv" Выводить отладочные сообщения SSH (аналог ssh -vvv)
GIT_TRACE_PACK_ACCESS=true Включить журналирование обращений к pack-файлам
GIT_TRACE_PACKET=true Включить журналирование пакетов при операциях с сетью
GIT_TRACE_PACKFILE=true Включить журналирование отправленных и принятых pack-файлов
GIT_TRACE_PERFORMANCE=true Включить журналирование данных о производительности
GIT_TRACE_SETUP=true Включить журналирование информации о репозитории и окружении, в котором выполняется сам Git
GIT_TRACE_SHALLOW=true Включить журналирование для отладки shallow-репозиториев