trace2: Add variable description to git.txt
cover trace2: Add variable description to git.txt
Jeff is out this week, so I picked up this request from Szeder. I'm very open to edit suggestions.
Thanks, -Stolee
In-Reply-To: [email protected]
Derrick Stolee (1):
trace2: Add variable description to git.txt
Documentation/git.txt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
base-commit: c173542c84cdf5e71b393e91f9d9664a85f995b2
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-189%2Fderrickstolee%2Ftrace2-docs-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-189/derrickstolee/trace2-docs-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/189
Signature · 1 line
gitgitgadget
PATCH 1/1 trace2: Add variable description to git.txt
From: Derrick Stolee <[email protected]>
Documentation/technical/api-trace2.txt contains the full details of the trace2 API and the GIT_TR2* environment variables. However, most environment variables are included in Documentation/git.txt, including the GIT_TRACE* variables.
Add a brief description of the GIT_TR2* variables with links to the full technical details. The biggest difference from the original variables is that we can specify a Unix Domain Socket. Mention this difference, but leave the details to the technical documents.
--- Documentation/git.txt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
Documentation/git.txt +21 -0
@@ -661,6 +661,27 @@ of clones and fetches. When a curl trace is enabled (see `GIT_TRACE_CURL` above), do not dump data (that is, only dump info lines and headers). +`GIT_TR2`:: + Enables more detailed trace messages from the "trace2" library. + Output from `GIT_TR2` is a simple text-based format for human + readability. ++ +The `GIT_TR2` variables can take many values. Any value available to +the `GIT_TRACE` variables is also available to `GIT_TR2`. The `GIT_TR2` +variables can also specify a Unix Domain Socket. See +link:technical/api-trace2.html[Trace2 documentation] for full details. + +`GIT_TR2_EVENT`:: + This setting writes a JSON-based format that is suited for machine + interpretation. See link:technical/api-trace2.html[Trace2 documentation] + for full details. + +`GIT_TR2_PERF`:: + In addition to the text-based messages available in `GIT_TR2`, this + setting writes a column-based format for understanding nesting + regions. See link:technical/api-trace2.html[Trace2 documentation] + for full details. + `GIT_REDACT_COOKIES`:: This can be set to a comma-separated list of strings. When a curl trace is enabled (see `GIT_TRACE_CURL` above), whenever a "Cookies:" header
Signature · 1 line
gitgitgadget
Thanks for the quick turnaround.
Quoted 7 lines · Derrick Stolee via GitGitGadget
From: Derrick Stolee <[email protected]>
Documentation/technical/api-trace2.txtcontains the full details of the trace2 API and the GIT_TR2* environment variables. However, most environment variables are included inDocumentation/git.txt, including the GIT_TRACE* variables.
Quoted 5 lines
Add a brief description of the GIT_TR2* variables with links to the full technical details. The biggest difference from the original variables is that we can specify a Unix Domain Socket. Mention this difference, but leave the details to the technical documents.
I think that it would be better to spell out the details instead of linking to the technical docs, because the link will only really work if you view the docs in a browser and you have the full docs available. OTOH, in 'man git' there are no links to conveniently click on, and the git packages from e.g. Ubuntu only include the man pages, the technical docs and the docs in html format are in the separate 'git-doc' package.
Quoted 40 lines
Reported-by Szeder Gábor <[email protected]>Signed-off-by Derrick Stolee <[email protected]>--- Documentation/git.txt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)Documentation/git.txt +21
-0@@ -661,6 +661,27 @@ of clones and fetches. When a curl trace is enabled (see `GIT_TRACE_CURL` above), do not dump data (that is, only dump info lines and headers). +`GIT_TR2`:: + Enables more detailed trace messages from the "trace2" library. + Output from `GIT_TR2` is a simple text-based format for human + readability. ++ +The `GIT_TR2` variables can take many values. Any value available to +the `GIT_TRACE` variables is also available to `GIT_TR2`. The `GIT_TR2` +variables can also specify a Unix Domain Socket. See +link:technical/api-trace2.html[Trace2 documentation] for full details. + +`GIT_TR2_EVENT`:: + This setting writes a JSON-based format that is suited for machine + interpretation. See link:technical/api-trace2.html[Trace2 documentation] + for full details. + +`GIT_TR2_PERF`:: + In addition to the text-based messages available in `GIT_TR2`, this + setting writes a column-based format for understanding nesting + regions. See link:technical/api-trace2.html[Trace2 documentation] + for full details. + `GIT_REDACT_COOKIES`:: This can be set to a comma-separated list of strings. When a curl trace is enabled (see `GIT_TRACE_CURL` above), whenever a "Cookies:" headerSignature · 1 line
gitgitgadget
PATCH 1/2 trace2: rename environment variables to GIT_TRACE2*
For an environment variable that is supposed to be set by users, the GIT_TR2* env vars are just too unclear, inconsistent, and ugly.
Most of the established GIT_* environment variables don't use abbreviations, and in case of the few that do (GIT_DIR, GIT_COMMON_DIR, GIT_DIFF_OPTS) it's quite obvious what the abbreviations (DIR and OPTS) stand for. But what does TR stand for? Track, traditional, trailer, transaction, transfer, transformation, transition, translation, transplant, transport, traversal, tree, trigger, truncate, trust, or ...?!
The trace2 facility, as the '2' suffix in its name suggests, is supposed to eventually supercede Git's original trace facility. It's reasonable to expect that the corresponding environment variables follow suit, and after the original GIT_TRACE variables they are called GIT_TRACE2; there is no such thing is 'GIT_TR'.
All trace2-specific config variables are, very sensibly, in the 'trace2' section, not in 'tr2'.
OTOH, we don't gain anything at all by omitting the last three characters of "trace" from the names of these environment variables.
So let's rename all GIT_TR2* environment variables to GIT_TRACE2*, before they make their way into a stable release.
---
Documentation/config/trace2.txt | 18 +++++----- Documentation/git.txt | 14 ++++---- Documentation/technical/api-trace2.txt | 46 +++++++++++++------------- t/t0001-init.sh | 2 +- t/t0210-trace2-normal.sh | 24 +++++++------- t/t0211-trace2-perf.sh | 20 +++++------ t/t0212-trace2-event.sh | 16 ++++----- t/t0212/parse_events.perl | 2 +- trace2.h | 2 +- trace2/tr2_cmd_name.c | 2 +- trace2/tr2_sid.c | 2 +- trace2/tr2_sysenv.c | 20 +++++------ trace2/tr2_sysenv.h | 2 +- 13 files changed, 85 insertions(+), 85 deletions(-)
Documentation/config/trace2.txt +9 -9
@@ -4,17 +4,17 @@ command line arguments are not respected. trace2.normalTarget:: This variable controls the normal target destination. - It may be overridden by the `GIT_TR2` environment variable. + It may be overridden by the `GIT_TRACE2` environment variable. The following table shows possible values. trace2.perfTarget:: This variable controls the performance target destination. - It may be overridden by the `GIT_TR2_PERF` environment variable. + It may be overridden by the `GIT_TRACE2_PERF` environment variable. The following table shows possible values. trace2.eventTarget:: This variable controls the event target destination. - It may be overridden by the `GIT_TR2_EVENT` environment variable. + It may be overridden by the `GIT_TRACE2_EVENT` environment variable. The following table shows possible values. + include::../trace2-target-values.txt[]
@@ -22,22 +22,22 @@ include::../trace2-target-values.txt[] trace2.normalBrief:: Boolean. When true `time`, `filename`, and `line` fields are omitted from normal output. May be overridden by the - `GIT_TR2_BRIEF` environment variable. Defaults to false. + `GIT_TRACE2_BRIEF` environment variable. Defaults to false. trace2.perfBrief:: Boolean. When true `time`, `filename`, and `line` fields are omitted from PERF output. May be overridden by the - `GIT_TR2_PERF_BRIEF` environment variable. Defaults to false. + `GIT_TRACE2_PERF_BRIEF` environment variable. Defaults to false. trace2.eventBrief:: Boolean. When true `time`, `filename`, and `line` fields are omitted from event output. May be overridden by the - `GIT_TR2_EVENT_BRIEF` environment variable. Defaults to false. + `GIT_TRACE2_EVENT_BRIEF` environment variable. Defaults to false. trace2.eventNesting:: Integer. Specifies desired depth of nested regions in the event output. Regions deeper than this value will be - omitted. May be overridden by the `GIT_TR2_EVENT_NESTING` + omitted. May be overridden by the `GIT_TRACE2_EVENT_NESTING` environment variable. Defaults to 2. trace2.configParams::
@@ -45,7 +45,7 @@ trace2.configParams:: settings that should be recorded in the trace2 output. For example, `core.*,remote.*.url` would cause the trace2 output to contain events listing each configured remote. - May be overridden by the `GIT_TR2_CONFIG_PARAMS` environment + May be overridden by the `GIT_TRACE2_CONFIG_PARAMS` environment variable. Unset by default. trace2.destinationDebug::
@@ -53,4 +53,4 @@ trace2.destinationDebug:: trace target destination cannot be opened for writing. By default, these errors are suppressed and tracing is silently disabled. May be overridden by the - `GIT_TR2_DST_DEBUG` environment variable. + `GIT_TRACE2_DST_DEBUG` environment variable.
Documentation/git.txt +7 -7
@@ -660,23 +660,23 @@ of clones and fetches. When a curl trace is enabled (see `GIT_TRACE_CURL` above), do not dump data (that is, only dump info lines and headers). -`GIT_TR2`:: +`GIT_TRACE2`:: Enables more detailed trace messages from the "trace2" library. - Output from `GIT_TR2` is a simple text-based format for human + Output from `GIT_TRACE2` is a simple text-based format for human readability. + -The `GIT_TR2` variables can take many values. Any value available to -the `GIT_TRACE` variables is also available to `GIT_TR2`. The `GIT_TR2` +The `GIT_TRACE2` variables can take many values. Any value available to +the `GIT_TRACE` variables is also available to `GIT_TRACE2`. The `GIT_TRACE2` variables can also specify a Unix Domain Socket. See link:technical/api-trace2.html[Trace2 documentation] for full details. -`GIT_TR2_EVENT`:: +`GIT_TRACE2_EVENT`:: This setting writes a JSON-based format that is suited for machine interpretation. See link:technical/api-trace2.html[Trace2 documentation] for full details. -`GIT_TR2_PERF`:: - In addition to the text-based messages available in `GIT_TR2`, this +`GIT_TRACE2_PERF`:: + In addition to the text-based messages available in `GIT_TRACE2`, this setting writes a column-based format for understanding nesting regions. See link:technical/api-trace2.html[Trace2 documentation] for full details.
Documentation/technical/api-trace2.txt +23 -23
147 lines not on this page · raw message
t/t0001-init.sh +1 -1
@@ -93,7 +93,7 @@ test_expect_success 'No extra GIT_* on alias scripts' ' sed -n \ -e "/^GIT_PREFIX=/d" \ -e "/^GIT_TEXTDOMAINDIR=/d" \ - -e "/^GIT_TR2_PARENT/d" \ + -e "/^GIT_TRACE2_PARENT/d" \ -e "/^GIT_/s/=.*//p" | sort EOF
t/t0210-trace2-normal.sh +12 -12
@@ -4,9 +4,9 @@ test_description='test trace2 facility (normal target)' . ./test-lib.sh # Turn off any inherited trace2 settings for this test. -sane_unset GIT_TR2 GIT_TR2_PERF GIT_TR2_EVENT -sane_unset GIT_TR2_BRIEF -sane_unset GIT_TR2_CONFIG_PARAMS +sane_unset GIT_TRACE2 GIT_TRACE2_PERF GIT_TRACE2_EVENT +sane_unset GIT_TRACE2_BRIEF +sane_unset GIT_TRACE2_CONFIG_PARAMS # Add t/helper directory to PATH so that we can use a relative # path to run nested instances of test-tool.exe (see 004child).
@@ -27,12 +27,12 @@ V=$(git version | sed -e 's/^git version //') && export V # to whatever filtering that target decides to do). # This script tests the normal target in isolation. # -# Defer setting GIT_TR2 until the actual command line we want to test +# Defer setting GIT_TRACE2 until the actual command line we want to test # because hidden git and test-tool commands run by the test harness # can contaminate our output. # Enable "brief" feature which turns off "<clock> <file>:<line> " prefix. -GIT_TR2_BRIEF=1 && export GIT_TR2_BRIEF +GIT_TRACE2_BRIEF=1 && export GIT_TRACE2_BRIEF # Basic tests of the trace2 normal stream. Since this stream is used # primarily with printf-style debugging/tracing, we do limited testing
@@ -54,7 +54,7 @@ GIT_TR2_BRIEF=1 && export GIT_TR2_BRIEF test_expect_success 'normal stream, return code 0' ' test_when_finished "rm trace.normal actual expect" && - GIT_TR2="$(pwd)/trace.normal" test-tool trace2 001return 0 && + GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 001return 0 && perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && cat >expect <<-EOF && version $V
@@ -68,7 +68,7 @@ test_expect_success 'normal stream, return code 0' ' test_expect_success 'normal stream, return code 1' ' test_when_finished "rm trace.normal actual expect" && - test_must_fail env GIT_TR2="$(pwd)/trace.normal" test-tool trace2 001return 1 && + test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 001return 1 && perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && cat >expect <<-EOF && version $V
@@ -83,7 +83,7 @@ test_expect_success 'normal stream, return code 1' ' test_expect_success 'automatic filename' ' test_when_finished "rm -r traces actual expect" && mkdir traces && - GIT_TR2="$(pwd)/traces" test-tool trace2 001return 0 && + GIT_TRACE2="$(pwd)/traces" test-tool trace2 001return 0 && perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <"$(ls traces/*)" >actual && cat >expect <<-EOF && version $V
@@ -101,7 +101,7 @@ test_expect_success 'automatic filename' ' test_expect_success 'normal stream, exit code 0' ' test_when_finished "rm trace.normal actual expect" && - GIT_TR2="$(pwd)/trace.normal" test-tool trace2 002exit 0 && + GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 002exit 0 && perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && cat >expect <<-EOF && version $V
@@ -115,7 +115,7 @@ test_expect_success 'normal stream, exit code 0' ' test_expect_success 'normal stream, exit code 1' ' test_when_finished "rm trace.normal actual expect" && - test_must_fail env GIT_TR2="$(pwd)/trace.normal" test-tool trace2 002exit 1 && + test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 002exit 1 && perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && cat >expect <<-EOF && version $V
@@ -133,7 +133,7 @@ test_expect_success 'normal stream, exit code 1' ' test_expect_success 'normal stream, error event' ' test_when_finished "rm trace.normal actual expect" && - GIT_TR2="$(pwd)/trace.normal" test-tool trace2 003error "hello world" "this is a test" && + GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 003error "hello world" "this is a test" && perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && cat >expect <<-EOF && version $V
@@ -147,7 +147,7 @@ test_expect_success 'normal stream, error event' ' test_cmp expect actual ' -sane_unset GIT_TR2_BRIEF +sane_unset GIT_TRACE2_BRIEF # Now test without environment variables and get all Trace2 settings # from the global config.
t/t0211-trace2-perf.sh +10 -10
@@ -4,9 +4,9 @@ test_description='test trace2 facility (perf target)' . ./test-lib.sh # Turn off any inherited trace2 settings for this test. -sane_unset GIT_TR2 GIT_TR2_PERF GIT_TR2_EVENT -sane_unset GIT_TR2_PERF_BRIEF -sane_unset GIT_TR2_CONFIG_PARAMS +sane_unset GIT_TRACE2 GIT_TRACE2_PERF GIT_TRACE2_EVENT +sane_unset GIT_TRACE2_PERF_BRIEF +sane_unset GIT_TRACE2_CONFIG_PARAMS # Add t/helper directory to PATH so that we can use a relative # path to run nested instances of test-tool.exe (see 004child).
@@ -27,13 +27,13 @@ V=$(git version | sed -e 's/^git version //') && export V # to whatever filtering that target decides to do). # Test each target independently. # -# Defer setting GIT_TR2_PERF until the actual command we want to +# Defer setting GIT_TRACE2_PERF until the actual command we want to # test because hidden git and test-tool commands in the test # harness can contaminate our output. # Enable "brief" feature which turns off the prefix: # "<clock> <file>:<line> | <nr_parents> | " -GIT_TR2_PERF_BRIEF=1 && export GIT_TR2_PERF_BRIEF +GIT_TRACE2_PERF_BRIEF=1 && export GIT_TRACE2_PERF_BRIEF # Repeat some of the t0210 tests using the perf target stream instead of # the normal stream.
@@ -46,7 +46,7 @@ GIT_TR2_PERF_BRIEF=1 && export GIT_TR2_PERF_BRIEF test_expect_success 'perf stream, return code 0' ' test_when_finished "rm trace.perf actual expect" && - GIT_TR2_PERF="$(pwd)/trace.perf" test-tool trace2 001return 0 && + GIT_TRACE2_PERF="$(pwd)/trace.perf" test-tool trace2 001return 0 && perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual && cat >expect <<-EOF && d0|main|version|||||$V
@@ -60,7 +60,7 @@ test_expect_success 'perf stream, return code 0' ' test_expect_success 'perf stream, return code 1' ' test_when_finished "rm trace.perf actual expect" && - test_must_fail env GIT_TR2_PERF="$(pwd)/trace.perf" test-tool trace2 001return 1 && + test_must_fail env GIT_TRACE2_PERF="$(pwd)/trace.perf" test-tool trace2 001return 1 && perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual && cat >expect <<-EOF && d0|main|version|||||$V
@@ -78,7 +78,7 @@ test_expect_success 'perf stream, return code 1' ' test_expect_success 'perf stream, error event' ' test_when_finished "rm trace.perf actual expect" && - GIT_TR2_PERF="$(pwd)/trace.perf" test-tool trace2 003error "hello world" "this is a test" && + GIT_TRACE2_PERF="$(pwd)/trace.perf" test-tool trace2 003error "hello world" "this is a test" && perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual && cat >expect <<-EOF && d0|main|version|||||$V
@@ -124,7 +124,7 @@ test_expect_success 'perf stream, error event' ' test_expect_success 'perf stream, child processes' ' test_when_finished "rm trace.perf actual expect" && - GIT_TR2_PERF="$(pwd)/trace.perf" test-tool trace2 004child test-tool trace2 004child test-tool trace2 001return 0 && + GIT_TRACE2_PERF="$(pwd)/trace.perf" test-tool trace2 004child test-tool trace2 004child test-tool trace2 001return 0 && perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual && cat >expect <<-EOF && d0|main|version|||||$V
@@ -150,7 +150,7 @@ test_expect_success 'perf stream, child processes' ' test_cmp expect actual ' -sane_unset GIT_TR2_PERF_BRIEF +sane_unset GIT_TRACE2_PERF_BRIEF # Now test without environment variables and get all Trace2 settings # from the global config.
t/t0212-trace2-event.sh +8 -8
@@ -4,9 +4,9 @@ test_description='test trace2 facility' . ./test-lib.sh # Turn off any inherited trace2 settings for this test. -sane_unset GIT_TR2 GIT_TR2_PERF GIT_TR2_EVENT -sane_unset GIT_TR2_BARE -sane_unset GIT_TR2_CONFIG_PARAMS +sane_unset GIT_TRACE2 GIT_TRACE2_PERF GIT_TRACE2_EVENT +sane_unset GIT_TRACE2_BARE +sane_unset GIT_TRACE2_CONFIG_PARAMS perl -MJSON::PP -e 0 >/dev/null 2>&1 && test_set_prereq JSON_PP
@@ -29,7 +29,7 @@ V=$(git version | sed -e 's/^git version //') && export V # to whatever filtering that target decides to do). # Test each target independently. # -# Defer setting GIT_TR2_PERF until the actual command we want to +# Defer setting GIT_TRACE2_PERF until the actual command we want to # test because hidden git and test-tool commands in the test # harness can contaminate our output.
@@ -42,7 +42,7 @@ V=$(git version | sed -e 's/^git version //') && export V test_expect_success JSON_PP 'event stream, error event' ' test_when_finished "rm trace.event actual expect" && - GIT_TR2_EVENT="$(pwd)/trace.event" test-tool trace2 003error "hello world" "this is a test" && + GIT_TRACE2_EVENT="$(pwd)/trace.event" test-tool trace2 003error "hello world" "this is a test" && perl "$TEST_DIRECTORY/t0212/parse_events.perl" <trace.event >actual && sed -e "s/^|//" >expect <<-EOF && |VAR1 = {
@@ -79,7 +79,7 @@ test_expect_success JSON_PP 'event stream, error event' ' test_expect_success JSON_PP 'event stream, return code 0' ' test_when_finished "rm trace.event actual expect" && - GIT_TR2_EVENT="$(pwd)/trace.event" test-tool trace2 004child test-tool trace2 004child test-tool trace2 001return 0 && + GIT_TRACE2_EVENT="$(pwd)/trace.event" test-tool trace2 004child test-tool trace2 004child test-tool trace2 001return 0 && perl "$TEST_DIRECTORY/t0212/parse_events.perl" <trace.event >actual && sed -e "s/^|//" >expect <<-EOF && |VAR1 = {
@@ -168,7 +168,7 @@ test_expect_success JSON_PP 'event stream, list config' ' test_when_finished "rm trace.event actual expect" && git config --local t0212.abc 1 && git config --local t0212.def "hello world" && - GIT_TR2_EVENT="$(pwd)/trace.event" GIT_TR2_CONFIG_PARAMS="t0212.*" test-tool trace2 001return 0 && + GIT_TRACE2_EVENT="$(pwd)/trace.event" GIT_TRACE2_CONFIG_PARAMS="t0212.*" test-tool trace2 001return 0 && perl "$TEST_DIRECTORY/t0212/parse_events.perl" <trace.event >actual && sed -e "s/^|//" >expect <<-EOF && |VAR1 = {
@@ -201,7 +201,7 @@ test_expect_success JSON_PP 'event stream, list config' ' test_expect_success JSON_PP 'basic trace2_data' ' test_when_finished "rm trace.event actual expect" && - GIT_TR2_EVENT="$(pwd)/trace.event" test-tool trace2 006data test_category k1 v1 test_category k2 v2 && + GIT_TRACE2_EVENT="$(pwd)/trace.event" test-tool trace2 006data test_category k1 v1 test_category k2 v2 && perl "$TEST_DIRECTORY/t0212/parse_events.perl" <trace.event >actual && sed -e "s/^|//" >expect <<-EOF && |VAR1 = {
t/t0212/parse_events.perl +1 -1
@@ -26,7 +26,7 @@ # The version of the trace2 event target format that we understand. # This is reported in the 'version' event in the 'evt' field. -# It comes from the GIT_TR2_EVENT_VERSION macro in trace2/tr2_tgt_event.c +# It comes from the GIT_TRACE2_EVENT_VERSION macro in trace2/tr2_tgt_event.c my $evt_version = '1'; my $show_children = 1;
trace2.h +1 -1
@@ -130,7 +130,7 @@ void trace2_cmd_alias_fl(const char *file, int line, const char *alias,* list of patterns configured important. For example: * git config --system trace2.configParams 'core.*,remote.*.url' * or: -* GIT_TR2_CONFIG_PARAMS=core.*,remote.*.url" +* GIT_TRACE2_CONFIG_PARAMS=core.*,remote.*.url" * * Note: this routine does a read-only iteration on the config data * (using read_early_config()), so it must not be called until enough
trace2/tr2_cmd_name.c +1 -1
@@ -1,7 +1,7 @@#include "cache.h" #include "trace2/tr2_cmd_name.h" -#define TR2_ENVVAR_PARENT_NAME "GIT_TR2_PARENT_NAME" +#define TR2_ENVVAR_PARENT_NAME "GIT_TRACE2_PARENT_NAME"static struct strbuf tr2cmdname_hierarchy =STRBUF_INIT ;
trace2/tr2_sid.c +1 -1
@@ -2,7 +2,7 @@#include "trace2/tr2_tbuf.h" #include "trace2/tr2_sid.h" -#define TR2_ENVVAR_PARENT_SID "GIT_TR2_PARENT_SID" +#define TR2_ENVVAR_PARENT_SID "GIT_TRACE2_PARENT_SID"static struct strbuf tr2sid_buf =STRBUF_INIT ;static int tr2sid_nr_git_parents;
trace2/tr2_sysenv.c +10 -10
@@ -21,33 +21,33 @@ struct tr2_sysenv_entry {* The strings in this table are constant and must match the published * config and environment variable names as described in the documentation. * -* We do not define entries for the GIT_TR2_PARENT_* environment +* We do not define entries for the GIT_TRACE2_PARENT_* environment * variables because they are transient and used to pass information * from parent to child git processes, rather than settings. */ /* clang-format off */ static struct tr2_sysenv_entry tr2_sysenv_settings[] = { - [TR2_SYSENV_CFG_PARAM ] = {"GIT_TR2_CONFIG_PARAMS" , + [TR2_SYSENV_CFG_PARAM ] = {"GIT_TRACE2_CONFIG_PARAMS" ,"trace2.configparams" }, - [TR2_SYSENV_DST_DEBUG ] = {"GIT_TR2_DST_DEBUG" , + [TR2_SYSENV_DST_DEBUG ] = {"GIT_TRACE2_DST_DEBUG" ,"trace2.destinationdebug" }, - [TR2_SYSENV_NORMAL ] = {"GIT_TR2" , + [TR2_SYSENV_NORMAL ] = {"GIT_TRACE2" ,"trace2.normaltarget" }, - [TR2_SYSENV_NORMAL_BRIEF ] = {"GIT_TR2_BRIEF" , + [TR2_SYSENV_NORMAL_BRIEF ] = {"GIT_TRACE2_BRIEF" ,"trace2.normalbrief" }, - [TR2_SYSENV_EVENT ] = {"GIT_TR2_EVENT" , + [TR2_SYSENV_EVENT ] = {"GIT_TRACE2_EVENT" ,"trace2.eventtarget" }, - [TR2_SYSENV_EVENT_BRIEF ] = {"GIT_TR2_EVENT_BRIEF" , + [TR2_SYSENV_EVENT_BRIEF ] = {"GIT_TRACE2_EVENT_BRIEF" ,"trace2.eventbrief" }, - [TR2_SYSENV_EVENT_NESTING ] = {"GIT_TR2_EVENT_NESTING" , + [TR2_SYSENV_EVENT_NESTING ] = {"GIT_TRACE2_EVENT_NESTING" ,"trace2.eventnesting" }, - [TR2_SYSENV_PERF ] = {"GIT_TR2_PERF" , + [TR2_SYSENV_PERF ] = {"GIT_TRACE2_PERF" ,"trace2.perftarget" }, - [TR2_SYSENV_PERF_BRIEF ] = {"GIT_TR2_PERF_BRIEF" , + [TR2_SYSENV_PERF_BRIEF ] = {"GIT_TRACE2_PERF_BRIEF" ,"trace2.perfbrief" }, };/* clang-format on */
trace2/tr2_sysenv.h +1 -1
@@ -7,7 +7,7 @@* * Note that this set does not contain any of the transient * environment variables used to pass information from parent -* to child git processes, such "GIT_TR2_PARENT_SID". +* to child git processes, such "GIT_TRACE2_PARENT_SID". */ enum tr2_sysenv_variable {TR2_SYSENV_CFG_PARAM =0 ,
Signature · 1 line
2.22.0.rc1.424.g15834b9bb1
PATCH 2/2 trace2: document the supported values of GIT_TRACE2* env variables
The descriptions of the GIT_TRACE2* environment variables link to the technical docs for further details on the supported values. However, a link like this only really works if the docs are viewed in a browser and the full documentation is available. OTOH, in 'man git' there are no links to conveniently click on, and distro-shipped git packages tend to include only the man pages, while the technical docs and the docs in html format are in a separate 'git-doc' package.
So let's describe the supported values to make the manpage more self-contained, but still keep the references to the technical docs because the details of the SID, and the JSON and perf output formats are definitely beyond the scope of 'man git'.
--- Documentation/git.txt | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-)
Documentation/git.txt +35 -8
@@ -665,21 +665,48 @@ of clones and fetches. Output from `GIT_TRACE2` is a simple text-based format for human readability. + -The `GIT_TRACE2` variables can take many values. Any value available to -the `GIT_TRACE` variables is also available to `GIT_TRACE2`. The `GIT_TRACE2` -variables can also specify a Unix Domain Socket. See -link:technical/api-trace2.html[Trace2 documentation] for full details. +If this variable is set to "1", "2" or "true" (comparison +is case insensitive), trace messages will be printed to +stderr. ++ +If the variable is set to an integer value greater than 2 +and lower than 10 (strictly) then Git will interpret this +value as an open file descriptor and will try to write the +trace messages into this file descriptor. ++ +Alternatively, if the variable is set to an absolute path +(starting with a '/' character), Git will interpret this +as a file path and will try to append the trace messages +to it. If the path already exists and is a directory, the +trace messages will be written to files (one per process) +in that directory, named according to the last component +of the SID and an optional counter (to avoid filename +collisions). ++ +In addition, if the variable is set to +`af_unix:[<socket_type>:]<absolute-pathname>`, Git will try +to open the path as a Unix Domain Socket. The socket type +can be either `stream` or `dgram`. ++ +Unsetting the variable, or setting it to empty, "0" or +"false" (case insensitive) disables trace messages. ++ +See link:technical/api-trace2.html[Trace2 documentation] +for full details. + `GIT_TRACE2_EVENT`:: This setting writes a JSON-based format that is suited for machine - interpretation. See link:technical/api-trace2.html[Trace2 documentation] - for full details. + interpretation. + See `GIT_TRACE2` for available trace output options and + link:technical/api-trace2.html[Trace2 documentation] for full details. `GIT_TRACE2_PERF`:: In addition to the text-based messages available in `GIT_TRACE2`, this setting writes a column-based format for understanding nesting - regions. See link:technical/api-trace2.html[Trace2 documentation] - for full details. + regions. + See `GIT_TRACE2` for available trace output options and + link:technical/api-trace2.html[Trace2 documentation] for full details. `GIT_REDACT_COOKIES`:: This can be set to a comma-separated list of strings. When a curl trace
Signature · 1 line
2.22.0.rc1.424.g15834b9bb1
Re: [PATCH 1/2] trace2: rename environment variables to GIT_TRACE2*
In reply to SZEDER GáborQuoted 2 lines · SZEDER Gábor
For an environment variable that is supposed to be set by users, the GIT_TR2* env vars are just too unclear, inconsistent, and ugly.
FWIW, I personally am in favor of this change and would prefer to see this done before the use of the names with unguessable abbreviation gets ingrained too deeply.
I do not see any objections around these two patches after waiting for a week or so, but I do not see any Yay!s, either, so ...
Quoted 5 lines
OTOH, we don't gain anything at all by omitting the last three characters of "trace" from the names of these environment variables.
So let's rename all GIT_TR2* environment variables to GIT_TRACE2*, before they make their way into a stable release.
Re: [PATCH 1/2] trace2: rename environment variables to GIT_TRACE2*
Quoted 11 lines · Junio C Hamano
Quoted 2 lines · SZEDER Gábor
For an environment variable that is supposed to be set by users, the GIT_TR2* env vars are just too unclear, inconsistent, and ugly.
FWIW, I personally am in favor of this change and would prefer to see this done before the use of the names with unguessable abbreviation gets ingrained too deeply.
I do not see any objections around these two patches after waiting for a week or so, but I do not see any Yay!s, either, so ...
Talking with Jeff offline, we have no objections to the new names.
We'll need to do some follow-up work on our side as we update our version of Git, but that's not an issue.
Thanks,
-Stolee
Re: [PATCH 1/2] trace2: rename environment variables to GIT_TRACE2*
Quoted 13 lines · Derrick Stolee
Quoted 11 lines · Junio C Hamano
Quoted 2 lines · SZEDER Gábor
For an environment variable that is supposed to be set by users, the GIT_TR2* env vars are just too unclear, inconsistent, and ugly.
FWIW, I personally am in favor of this change and would prefer to see this done before the use of the names with unguessable abbreviation gets ingrained too deeply.
I do not see any objections around these two patches after waiting for a week or so, but I do not see any Yay!s, either, so ...
Quoted 8 lines
Talking with Jeff offline, we have no objections to the new names.
We'll need to do some follow-up work on our side as we update our version of Git, but that's not an issue.
Thanks,
-Stolee
Just to close the loop. Yes, I'm OK with changing the names.
Jeff
Re: [PATCH 1/2] trace2: rename environment variables to GIT_TRACE2*
In reply to SZEDER GáborQuoted 17 lines · SZEDER Gábor
For an environment variable that is supposed to be set by users, the GIT_TR2* env vars are just too unclear, inconsistent, and ugly.
Most of the established GIT_* environment variables don't use abbreviations, and in case of the few that do (
GIT_DIR,GIT_COMMON_DIR,GIT_DIFF_OPTS) it's quite obvious what the abbreviations (DIR and OPTS) stand for. But what does TR stand for? Track, traditional, trailer, transaction, transfer, transformation, transition, translation, transplant, transport, traversal, tree, trigger, truncate, trust, or ...?!The trace2 facility, as the '2' suffix in its name suggests, is supposed to eventually supercede Git's original trace facility. It's reasonable to expect that the corresponding environment variables follow suit, and after the original
GIT_TRACEvariables they are calledGIT_TRACE2; there is no such thing is 'GIT_TR'.
Quoted 8 lines
All trace2-specific config variables are, very sensibly, in the 'trace2' section, not in 'tr2'.
OTOH, we don't gain anything at all by omitting the last three characters of "trace" from the names of these environment variables.
So let's rename all GIT_TR2* environment variables to GIT_TRACE2*, before they make their way into a stable release.
Good to see this land in 2.22.0. I wonder if we shouldn't take this further and rename trace2.* config to trace.*, and just re-use GIT_TRACE=1 instead of having GIT_TRACE2 as well, and have a GIT_TRACE_VERSION to switch between them.
Then we could just switch in a future version. We've never promised what the trace format was going to look like, and the existing one isn't configurable (and we won't be making the v1 one...), so starting from the outset with "2" in config is unfortunate.
We'd still have special snowflakes like e.g. GIT_TRACE_PACKET.
OTOH we can just do this after the release if it's deemed a good idea, and just support trace2.* as aliases for trace.* for some amount of time, same for the env vars.
Re: [PATCH 1/2] trace2: rename environment variables to GIT_TRACE2*
Quoted 39 lines · Ævar Arnfjörð Bjarmason
Quoted 17 lines · SZEDER Gábor
For an environment variable that is supposed to be set by users, the GIT_TR2* env vars are just too unclear, inconsistent, and ugly.
Most of the established GIT_* environment variables don't use abbreviations, and in case of the few that do (
GIT_DIR,GIT_COMMON_DIR,GIT_DIFF_OPTS) it's quite obvious what the abbreviations (DIR and OPTS) stand for. But what does TR stand for? Track, traditional, trailer, transaction, transfer, transformation, transition, translation, transplant, transport, traversal, tree, trigger, truncate, trust, or ...?!The trace2 facility, as the '2' suffix in its name suggests, is supposed to eventually supercede Git's original trace facility. It's reasonable to expect that the corresponding environment variables follow suit, and after the original
GIT_TRACEvariables they are calledGIT_TRACE2; there is no such thing is 'GIT_TR'.Quoted 8 lines
All trace2-specific config variables are, very sensibly, in the 'trace2' section, not in 'tr2'.
OTOH, we don't gain anything at all by omitting the last three characters of "trace" from the names of these environment variables.
So let's rename all GIT_TR2* environment variables to GIT_TRACE2*, before they make their way into a stable release.
Good to see this land in 2.22.0. I wonder if we shouldn't take this further and rename trace2.* config to trace.*, and just re-use GIT_TRACE=1 instead of having
GIT_TRACE2as well, and have aGIT_TRACE_VERSIONto switch between them.Then we could just switch in a future version. We've never promised what the trace format was going to look like, and the existing one isn't configurable (and we won't be making the v1 one...), so starting from the outset with "2" in config is unfortunate.
Quoted 6 lines
We'd still have special snowflakes like e.g.
GIT_TRACE_PACKET.OTOH we can just do this after the release if it's deemed a good idea, and just support trace2.* as aliases for trace.* for some amount of time, same for the env vars.
I'm open to considering such a change while we're at it.
Jeff
Re: [PATCH 1/2] trace2: rename environment variables to GIT_TRACE2*
Quoted 17 lines · Jeff Hostetler
Quoted 16 lines · Ævar Arnfjörð Bjarmason
On Sun, May 19 2019, SZEDER Gábor wrote:
...Quoted 2 lines
So let's rename all GIT_TR2* environment variables to GIT_TRACE2*, before they make their way into a stable release.
Good to see this land in 2.22.0. I wonder if we shouldn't take this further and rename trace2.* config to trace.*, and just re-use GIT_TRACE=1 instead of having
GIT_TRACE2as well, and have aGIT_TRACE_VERSIONto switch between them.Then we could just switch in a future version. We've never promised what the trace format was going to look like, and the existing one isn't configurable (and we won't be making the v1 one...), so starting from the outset with "2" in config is unfortunate.
Quoted 7 lines
Quoted 5 lines
We'd still have special snowflakes like e.g.
GIT_TRACE_PACKET.OTOH we can just do this after the release if it's deemed a good idea, and just support trace2.* as aliases for trace.* for some amount of time, same for the env vars.
I'm open to considering such a change while we're at it.
I'm a bit against "while we're at it" part. Let's take the s/TR2/TRACE2/ change and stop at it for the upcoming release, without spending too much time on over-engineering the stuff that are primarily for developers.
Thanks.
PATCH 1/1 Revert "test-lib: whitelist GIT_TR2_* in the environment"
In reply to SZEDER GáborThis reverts my commit c1ee5796dc ("test-lib: whitelist GIT_TR2_* in the environment", 2019-03-30), which is now redundant.
Since e4b75d6a1d ("trace2: rename environment variables to GIT_TRACE2*", 2019-05-19) the GIT_TRACE2* variables match the existing GIT_TRACE* pattern added in 95a1d12e9b ("tests: scrub environment of GIT_* variables", 2011-03-15), so we no longer need to list TR2 here.
--- t/test-lib.sh | 1 - 1 file changed, 1 deletion(-)
t/test-lib.sh +0 -1
@@ -386,7 +386,6 @@ unset VISUAL EMAIL LANGUAGE COLUMNS $("$PERL_PATH" -e ' my @env = keys %ENV; my $ok = join("|", qw( TRACE - TR2_ DEBUG TEST .*_TEST
Signature · 1 line
2.22.0.rc1.257.g3120a18244
Re: [PATCH] Revert "test-lib: whitelist GIT_TR2_* in the environment"
Quoted 7 lines · Ævar Arnfjörð Bjarmason
This reverts my commit
c1ee5796dc("test-lib: whitelist GIT_TR2_* in the environment", 2019-03-30), which is now redundant.Since
e4b75d6a1d("trace2: rename environment variables to GIT_TRACE2*", 2019-05-19) the GIT_TRACE2* variables match the existing GIT_TRACE* pattern added in95a1d12e9b("tests: scrub environment of GIT_* variables", 2011-03-15), so we no longer need to list TR2 here.
Yeah, makes sense. Thanks.
Quoted 18 lines
Signed-off-by Ævar Arnfjörð Bjarmason <[email protected]>--- t/test-lib.sh | 1 - 1 file changed, 1 deletion(-)t/test-lib.sh +0
-1@@ -386,7 +386,6 @@ unset VISUAL EMAIL LANGUAGE COLUMNS $("$PERL_PATH" -e ' my @env = keys %ENV; my $ok = join("|", qw( TRACE - TR2_ DEBUG TEST .*_TEST