Merge branch 'tl/trace2-config-scope'
Tweak trace2 output about configuration variables. * tl/trace2-config-scope: tr2: shows scope unconditionally in addition to key-value pair api-trace2.txt: print config key-value pair
This commit is contained in:
commit
10ccb50b16
@ -717,6 +717,7 @@ The "exec_id" field is a command-unique id and is only useful if the
|
||||
{
|
||||
"event":"def_param",
|
||||
...
|
||||
"scope":"global",
|
||||
"param":"core.abbrev",
|
||||
"value":"7"
|
||||
}
|
||||
@ -1207,6 +1208,45 @@ at offset 508.
|
||||
This example also shows that thread names are assigned in a racy manner
|
||||
as each thread starts and allocates TLS storage.
|
||||
|
||||
Config (def param) Events::
|
||||
|
||||
Dump "interesting" config values to trace2 log.
|
||||
+
|
||||
We can optionally emit configuration events, see
|
||||
`trace2.configparams` in linkgit:git-config[1] for how to enable
|
||||
it.
|
||||
+
|
||||
----------------
|
||||
$ git config --system color.ui never
|
||||
$ git config --global color.ui always
|
||||
$ git config --local color.ui auto
|
||||
$ git config --list --show-scope | grep 'color.ui'
|
||||
system color.ui=never
|
||||
global color.ui=always
|
||||
local color.ui=auto
|
||||
----------------
|
||||
+
|
||||
Then, mark the config `color.ui` as "interesting" config with
|
||||
`GIT_TRACE2_CONFIG_PARAMS`:
|
||||
+
|
||||
----------------
|
||||
$ export GIT_TRACE2_PERF_BRIEF=1
|
||||
$ export GIT_TRACE2_PERF=~/log.perf
|
||||
$ export GIT_TRACE2_CONFIG_PARAMS=color.ui
|
||||
$ git version
|
||||
...
|
||||
$ cat ~/log.perf
|
||||
d0 | main | version | | | | | ...
|
||||
d0 | main | start | | 0.001642 | | | /usr/local/bin/git version
|
||||
d0 | main | cmd_name | | | | | version (version)
|
||||
d0 | main | def_param | | | | scope:system | color.ui:never
|
||||
d0 | main | def_param | | | | scope:global | color.ui:always
|
||||
d0 | main | def_param | | | | scope:local | color.ui:auto
|
||||
d0 | main | data | r0 | 0.002100 | 0.002100 | fsync | fsync/writeout-only:0
|
||||
d0 | main | data | r0 | 0.002126 | 0.002126 | fsync | fsync/hardware-flush:0
|
||||
d0 | main | exit | | 0.000470 | | | code:0
|
||||
d0 | main | atexit | | 0.000477 | | | code:0
|
||||
----------------
|
||||
== Future Work
|
||||
|
||||
=== Relationship to the Existing Trace Api (api-trace.txt)
|
||||
|
@ -479,9 +479,12 @@ static void fn_param_fl(const char *file, int line, const char *param,
|
||||
{
|
||||
const char *event_name = "def_param";
|
||||
struct json_writer jw = JSON_WRITER_INIT;
|
||||
enum config_scope scope = current_config_scope();
|
||||
const char *scope_name = config_scope_name(scope);
|
||||
|
||||
jw_object_begin(&jw, 0);
|
||||
event_fmt_prepare(event_name, file, line, NULL, &jw);
|
||||
jw_object_string(&jw, "scope", scope_name);
|
||||
jw_object_string(&jw, "param", param);
|
||||
jw_object_string(&jw, "value", value);
|
||||
jw_end(&jw);
|
||||
|
@ -298,8 +298,11 @@ static void fn_param_fl(const char *file, int line, const char *param,
|
||||
const char *value)
|
||||
{
|
||||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
enum config_scope scope = current_config_scope();
|
||||
const char *scope_name = config_scope_name(scope);
|
||||
|
||||
strbuf_addf(&buf_payload, "def_param %s=%s", param, value);
|
||||
strbuf_addf(&buf_payload, "def_param scope:%s %s=%s", scope_name, param,
|
||||
value);
|
||||
normal_io_write_fl(file, line, &buf_payload);
|
||||
strbuf_release(&buf_payload);
|
||||
}
|
||||
|
@ -441,12 +441,17 @@ static void fn_param_fl(const char *file, int line, const char *param,
|
||||
{
|
||||
const char *event_name = "def_param";
|
||||
struct strbuf buf_payload = STRBUF_INIT;
|
||||
struct strbuf scope_payload = STRBUF_INIT;
|
||||
enum config_scope scope = current_config_scope();
|
||||
const char *scope_name = config_scope_name(scope);
|
||||
|
||||
strbuf_addf(&buf_payload, "%s:%s", param, value);
|
||||
strbuf_addf(&scope_payload, "%s:%s", "scope", scope_name);
|
||||
|
||||
perf_io_write_fl(file, line, event_name, NULL, NULL, NULL, NULL,
|
||||
&buf_payload);
|
||||
perf_io_write_fl(file, line, event_name, NULL, NULL, NULL,
|
||||
scope_payload.buf, &buf_payload);
|
||||
strbuf_release(&buf_payload);
|
||||
strbuf_release(&scope_payload);
|
||||
}
|
||||
|
||||
static void fn_repo_fl(const char *file, int line,
|
||||
|
Loading…
Reference in New Issue
Block a user