Трассировка команд в Git

Недавно разбирался почему клонирование большого репозитория в Git занимает так много времени. Текущая версия ответа “ну репозиторий же большой, что ж вы хотели-то?” звучит логично, но все равно руки чешутся найти какую-нибудь глупость и ускорить этот процесс раза в два. Пока что-то не очень получается…

Пока копался в недрах наткнулся на то, что Git содержит встроенную трассировку команд. Трассировка включается через переменные окружения вида GIT_TRACE_XXX. Если значение переменной true, 1 или 2 - отладочные сообщения будут писаться в stderr. Если значение переменной - абсолютный путь, начинающийся с /, то отладочные сообщения будут писаться в этот файл.

Поддерживаются следующие категории сообщений:

Разные категории сообщений могут писаться в один файл. Новые сообщения дописываются в конец файла.

Возможность писать сообщения в файл особенно удобна. К примеру, я добавил export GIT_TRACE_PERFORMANCE=/home/<user>/git_trace.log в .zshrc и теперь если Git неожиданно замирает на ровном месте, tail -n30 ~/git_trace.txt выдает мне сводку где Git проводит больше всего времени.

comments powered by Disqus