Skip to content

Commit

Permalink
trace2: rename environment variables to GIT_TRACE2*
Browse files Browse the repository at this point in the history
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.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
szeder authored and gitster committed May 28, 2019
1 parent aa25c82 commit e4b75d6
Show file tree
Hide file tree
Showing 13 changed files with 85 additions and 85 deletions.
18 changes: 9 additions & 9 deletions Documentation/config/trace2.txt
Expand Up @@ -4,53 +4,53 @@ 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[]

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::
A comma-separated list of patterns of "important" config
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::
Boolean. When true Git will print error messages when a
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.
14 changes: 7 additions & 7 deletions Documentation/git.txt
Expand Up @@ -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.
Expand Down
46 changes: 23 additions & 23 deletions Documentation/technical/api-trace2.txt
Expand Up @@ -23,7 +23,7 @@ formats in the future. This might be used to define a binary format,
for example.

Trace2 is controlled using `trace2.*` config values in the system and
global config files and `GIT_TR2*` environment variables. Trace2 does
global config files and `GIT_TRACE2*` environment variables. Trace2 does
not read from repo local or worktree config files or respect `-c`
command line config settings.

Expand All @@ -42,7 +42,7 @@ config setting.
For example

------------
$ export GIT_TR2=~/log.normal
$ export GIT_TRACE2=~/log.normal
$ git version
git version 2.20.1.155.g426c96fcdb
------------
Expand Down Expand Up @@ -71,13 +71,13 @@ $ cat ~/log.normal
The performance format target (PERF) is a column-based format to
replace GIT_TRACE_PERFORMANCE and is suitable for development and
testing, possibly to complement tools like gprof. This format is
enabled with the `GIT_TR2_PERF` environment variable or the
enabled with the `GIT_TRACE2_PERF` environment variable or the
`trace2.perfTarget` system or global config setting.

For example

------------
$ export GIT_TR2_PERF=~/log.perf
$ export GIT_TRACE2_PERF=~/log.perf
$ git version
git version 2.20.1.155.g426c96fcdb
------------
Expand All @@ -104,14 +104,14 @@ $ cat ~/log.perf
=== The Event Format Target

The event format target is a JSON-based format of event data suitable
for telemetry analysis. This format is enabled with the `GIT_TR2_EVENT`
for telemetry analysis. This format is enabled with the `GIT_TRACE2_EVENT`
environment variable or the `trace2.eventTarget` system or global config
setting.

For example

------------
$ export GIT_TR2_EVENT=~/log.event
$ export GIT_TRACE2_EVENT=~/log.event
$ git version
git version 2.20.1.155.g426c96fcdb
------------
Expand Down Expand Up @@ -273,7 +273,7 @@ significantly affects program performance or behavior, such as
Emits a "def_param" messages for "important" configuration
settings.
+
The environment variable `GIT_TR2_CONFIG_PARAMS` or the `trace2.configParams`
The environment variable `GIT_TRACE2_CONFIG_PARAMS` or the `trace2.configParams`
config value can be set to a
list of patterns of important configuration settings, for example:
`core.*,remote.*.url`. This function will iterate over all config
Expand Down Expand Up @@ -465,7 +465,7 @@ Events are written as lines of the form:
Note that this may contain embedded LF or CRLF characters that are
not escaped, so the event may spill across multiple lines.

If `GIT_TR2_BRIEF` or `trace2.normalBrief` is true, the `time`, `filename`,
If `GIT_TRACE2_BRIEF` or `trace2.normalBrief` is true, the `time`, `filename`,
and `line` fields are omitted.

This target is intended to be more of a summary (like GIT_TRACE) and
Expand Down Expand Up @@ -533,7 +533,7 @@ This field is in anticipation of in-proc submodules in the future.
15:33:33.532712 wt-status.c:2331 | d0 | main | region_leave | r1 | 0.127568 | 0.001504 | status | label:print
------------

If `GIT_TR2_PERF_BRIEF` or `trace2.perfBrief` is true, the `time`, `file`,
If `GIT_TRACE2_PERF_BRIEF` or `trace2.perfBrief` is true, the `time`, `file`,
and `line` fields are omitted.

------------
Expand Down Expand Up @@ -598,7 +598,7 @@ The following key/value pairs are common to all events:
`"repo":<repo-id>`::
when present, is the integer repo-id as described previously.

If `GIT_TR2_EVENT_BRIEF` or `trace2.eventBrief` is true, the `file`
If `GIT_TRACE2_EVENT_BRIEF` or `trace2.eventBrief` is true, the `file`
and `line` fields are omitted from all events and the `time` field is
only present on the "start" and "atexit" events.

Expand Down Expand Up @@ -911,7 +911,7 @@ visited.
The `category` field may be used in a future enhancement to
do category-based filtering.
+
`GIT_TR2_EVENT_NESTING` or `trace2.eventNesting` can be used to
`GIT_TRACE2_EVENT_NESTING` or `trace2.eventNesting` can be used to
filter deeply nested regions and data events. It defaults to "2".

`"region_leave"`::
Expand Down Expand Up @@ -1039,8 +1039,8 @@ rev-list, and gc. This example also shows that fetch took
5.199 seconds and of that 4.932 was in ssh.
+
----------------
$ export GIT_TR2_BRIEF=1
$ export GIT_TR2=~/log.normal
$ export GIT_TRACE2_BRIEF=1
$ export GIT_TRACE2=~/log.normal
$ git fetch origin
...
----------------
Expand Down Expand Up @@ -1075,8 +1075,8 @@ its name as "gc", it also reports the hierarchy as "fetch/gc".
indented for clarity.)
+
----------------
$ export GIT_TR2_BRIEF=1
$ export GIT_TR2=~/log.normal
$ export GIT_TRACE2_BRIEF=1
$ export GIT_TRACE2=~/log.normal
$ git fetch origin
...
----------------
Expand Down Expand Up @@ -1134,8 +1134,8 @@ In this example, scanning for untracked files ran from +0.012568 to
+0.027149 (since the process started) and took 0.014581 seconds.
+
----------------
$ export GIT_TR2_PERF_BRIEF=1
$ export GIT_TR2_PERF=~/log.perf
$ export GIT_TRACE2_PERF_BRIEF=1
$ export GIT_TRACE2_PERF=~/log.perf
$ git status
...

Expand Down Expand Up @@ -1180,8 +1180,8 @@ static enum path_treatment read_directory_recursive(struct dir_struct *dir,
We can further investigate the time spent scanning for untracked files.
+
----------------
$ export GIT_TR2_PERF_BRIEF=1
$ export GIT_TR2_PERF=~/log.perf
$ export GIT_TRACE2_PERF_BRIEF=1
$ export GIT_TRACE2_PERF=~/log.perf
$ git status
...
$ cat ~/log.perf
Expand Down Expand Up @@ -1236,8 +1236,8 @@ int read_index_from(struct index_state *istate, const char *path,
This example shows that the index contained 3552 entries.
+
----------------
$ export GIT_TR2_PERF_BRIEF=1
$ export GIT_TR2_PERF=~/log.perf
$ export GIT_TRACE2_PERF_BRIEF=1
$ export GIT_TRACE2_PERF=~/log.perf
$ git status
...
$ cat ~/log.perf
Expand Down Expand Up @@ -1310,8 +1310,8 @@ Data events are tagged with the active thread name. They are used
to report the per-thread parameters.
+
----------------
$ export GIT_TR2_PERF_BRIEF=1
$ export GIT_TR2_PERF=~/log.perf
$ export GIT_TRACE2_PERF_BRIEF=1
$ export GIT_TRACE2_PERF=~/log.perf
$ git status
...
$ cat ~/log.perf
Expand Down
2 changes: 1 addition & 1 deletion t/t0001-init.sh
Expand Up @@ -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
Expand Down
24 changes: 12 additions & 12 deletions t/t0210-trace2-normal.sh
Expand Up @@ -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).
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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.
Expand Down

0 comments on commit e4b75d6

Please sign in to comment.