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",
|
"event":"def_param",
|
||||||
...
|
...
|
||||||
|
"scope":"global",
|
||||||
"param":"core.abbrev",
|
"param":"core.abbrev",
|
||||||
"value":"7"
|
"value":"7"
|
||||||
}
|
}
|
||||||
@ -1207,6 +1208,45 @@ at offset 508.
|
|||||||
This example also shows that thread names are assigned in a racy manner
|
This example also shows that thread names are assigned in a racy manner
|
||||||
as each thread starts and allocates TLS storage.
|
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
|
== Future Work
|
||||||
|
|
||||||
=== Relationship to the Existing Trace Api (api-trace.txt)
|
=== 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";
|
const char *event_name = "def_param";
|
||||||
struct json_writer jw = JSON_WRITER_INIT;
|
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);
|
jw_object_begin(&jw, 0);
|
||||||
event_fmt_prepare(event_name, file, line, NULL, &jw);
|
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, "param", param);
|
||||||
jw_object_string(&jw, "value", value);
|
jw_object_string(&jw, "value", value);
|
||||||
jw_end(&jw);
|
jw_end(&jw);
|
||||||
|
@ -298,8 +298,11 @@ static void fn_param_fl(const char *file, int line, const char *param,
|
|||||||
const char *value)
|
const char *value)
|
||||||
{
|
{
|
||||||
struct strbuf buf_payload = STRBUF_INIT;
|
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);
|
normal_io_write_fl(file, line, &buf_payload);
|
||||||
strbuf_release(&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";
|
const char *event_name = "def_param";
|
||||||
struct strbuf buf_payload = STRBUF_INIT;
|
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(&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,
|
perf_io_write_fl(file, line, event_name, NULL, NULL, NULL,
|
||||||
&buf_payload);
|
scope_payload.buf, &buf_payload);
|
||||||
strbuf_release(&buf_payload);
|
strbuf_release(&buf_payload);
|
||||||
|
strbuf_release(&scope_payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fn_repo_fl(const char *file, int line,
|
static void fn_repo_fl(const char *file, int line,
|
||||||
|
Loading…
Reference in New Issue
Block a user