Git 2.22 (Q2 2019) представляет trace2
с commit ee4512e by Джефф Хостетлер :
trace2
: создать новое комбинированное средство трассировки
Создайте новое унифицированное средство трассировки для git.
Возможное намерение состоит в том, чтобы заменить текущие подпрограммы trace_printf*
и trace_performance*
унифицированным набором подпрограмм git_trace2*
.
В дополнение к обычному API в стиле printf, trace2
обеспечивает более высокий уровень
глаголы событий с фиксированными полями, позволяющими записывать структурированные данные.
Это облегчает постобработку и анализ для внешних инструментов.
Trace2 определяет 3 выходные цели.
Они устанавливаются с использованием переменных среды "GIT_TR2
", "GIT_TR2_PERF
" и "GIT_TR2_EVENT
".
Для них может быть задано значение «1» или абсолютный путь (точно так же, как текущий GIT_TRACE
).
Примечание: в отношении имени переменной среды всегда используйте GIT_TRACExxx
, а не GIT_TRxxx
.
Так что на самом деле GIT_TRACE2
, GIT_TRACE2_PERF
или GIT_TRACE2_EVENT
.
См. Переименование Git 2.22, упомянутое ниже.
Ниже приводится начальная работа над этой новой функцией трассировки с старыми именами переменных среды:
GIT_TR2
предназначен для замены команды GIT_TRACE
и logs
сводные данные.
GIT_TR2_PERF
предназначен для замены GIT_TRACE_PERFORMANCE
.
Он расширяет вывод столбцами для командного процесса, потока,
репо, абсолютное и относительное истекшее время. Он сообщает о событиях для
запуск / остановка дочернего процесса, запуск / остановка потока и функция для каждого потока
вложенности.
GIT_TR2_EVENT
- это новый структурированный формат. Он записывает данные о событии в виде
серия записей JSON.
Вызовы в функции trace2 регистрируются в любой из 3 включенных выходных целей без необходимости вызова различных подпрограмм trace_printf*
или trace_performance*
.
См. коммит a4d3a28 (21 марта 2019 г.) от Джоша Стедмона (steadmon
) .
(Объединено с Junio C Hamano - gitster
- в коммит 1b40314 , 08 мая 2019 г.)
trace2
: запись в каталог цели
Если значение переменной среды trace2 является абсолютным путем, ссылающимся на существующий каталог, записать выходные данные в файлы (по одному на процесс) под указанным каталогом.
Файлы будут именоваться в соответствии с последним компонентом SID trace2, за которым следует счетчик, чтобы избежать возможных конфликтов.
Это делает более удобным собирать следы для каждого вызова git
безоговорочно устанавливая соответствующий trace2
envvar постоянным
имя каталога.
См. Также commit f672dee (29 апреля 2019) и commit 81567ca , commit 08881b9 , commit bad229a , коммит 26c6f25 , коммит bce9db6 , коммит 800a7f9 , коммит a7bc01e , коммит 39f4317 , коммит a089724 совершить 1703751 (15 апреля 2019 г.) Джефф Хостетлер (jeffhostetler
) .
(Объединено с Junio C Hamano - gitster
- в commit 5b2d1c0 , 13 мая 2019 г.)
Новая документация теперь включает параметры конфигурации , которые считываются только из системных и глобальных файлов конфигурации (то есть локальные файлы конфигурации и файлы конфигурации рабочего дерева и аргументы командной строки -c
не являются уважаемый.)
Пример
$ git config --global trace2.normalTarget ~/log.normal
$ git version
git version 2.20.1.155.g426c96fcdb
выходы
$ cat ~/log.normal
12:28:42.620009 common-main.c:38 version 2.20.1.155.g426c96fcdb
12:28:42.620989 common-main.c:39 start git version
12:28:42.621101 git.c:432 cmd_name version (version)
12:28:42.621215 git.c:662 exit elapsed:0.001227 code:0
12:28:42.621250 trace2/tr2_tgt_normal.c:124 atexit elapsed:0.001265 code:0
А для показатель производительности :
$ git config --global trace2.perfTarget ~/log.perf
$ git version
git version 2.20.1.155.g426c96fcdb
выходы
$ cat ~/log.perf
12:28:42.620675 common-main.c:38 | d0 | main | version | | | | | 2.20.1.155.g426c96fcdb
12:28:42.621001 common-main.c:39 | d0 | main | start | | 0.001173 | | | git version
12:28:42.621111 git.c:432 | d0 | main | cmd_name | | | | | version (version)
12:28:42.621225 git.c:662 | d0 | main | exit | | 0.001227 | | | code:0
12:28:42.621259 trace2/tr2_tgt_perf.c:211 | d0 | main | atexit | | 0.001265 | | | code:0
Как описано в Git 2.23 (Q3 2019), используемая переменная среды - GIT_TRACE2
.
См. коммит 6114a40 (26 июня 2019 г.) от Карло Марсело Аренас Белон (carenas
) .
См. коммит 3efa1c6 (12 июня 2019 г.) от Ævar Arnfjörð Bjarmason (avar
) .
(Объединено с Junio C Hamano - gitster
- in commit e9eaaa4 , 09 Jul 2019)
Это следует за работой, проделанной в Git 2.22: commit 4e0d3aa , commit e4b75d6 (19 мая 2019) SZEDER Gábor (szeder
) .
(Объединено Junio C Hamano - gitster
- в коммит 463dca6 , 30 мая 2019 г.)
trace2
: переименовать переменные среды в GIT_TRACE2 *
Для переменной окружения, которую должны устанавливать пользователи, переменные GIT_TR2*
env слишком непонятны, непоследовательны и ужасны.
Большинство установленных GIT_*
переменных среды не используют
аббревиатуры, а в случае немногих из них (GIT_DIR
, GIT_COMMON_DIR
, GIT_DIFF_OPTS
) совершенно очевидно, что обозначают аббревиатуры (DIR
и OPTS
).
Но что означает TR
? Трек, традиционный, трейлер, транзакция, перевод, трансформация, переход, перевод, пересадка, транспорт, обход, дерево,
вызвать, усечь, довериться или ...?!
Средство trace2, как следует из названия суффикса '2',
должен в конечном итоге заменить первоначальную трассировку Git.
Разумно ожидать, что соответствующие переменные среды
следуйте примеру, и после оригинальных GIT_TRACE
переменных они
называется GIT_TRACE2
; нет такой вещи, как «GIT_TR
».
Все специфичные для trace2 конфигурационные переменные очень разумно
Секция 'trace2
', не в 'tr2
'.
OTOH, мы ничего не получаем, опуская последние три
символы «след» от имен этих переменных среды .
Итак, давайте переименуем все GIT_TR2*
переменные окружения в GIT_TRACE2*
,
прежде чем они доберутся до стабильного выпуска.