Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.9.5 → 2.24.4 no changes
-
2.8.6
2017-07-30
- 2.2.3 → 2.7.6 no changes
-
2.1.4
2014-12-17
The trace API can be used to print debug messages to stderr or a file. Trace
code is inactive unless explicitly enabled by setting GIT_TRACE* environment
variables.
The trace implementation automatically adds timestamp file:line ... \n to all trace messages. E.g.:
23:59:59.123456 git.c:312 trace: built-in: git 'foo' 00:00:00.000001 builtin/foo.c:99 foo: some message
Data Structures
structtrace_key-
Defines a trace key (or category). The default (for API functions that don’t take a key) is
GIT_TRACE.E.g. to define a trace key controlled by environment variable
GIT_TRACE_FOO:static struct trace_key trace_foo = TRACE_KEY_INIT(FOO); static void trace_print_foo(const char *message) { trace_print_key(&trace_foo, message); }Note: don’t use
constas the trace implementation stores internal state in thetrace_keystructure.
Functions
inttrace_want(structtrace_key*key)-
Checks whether the trace key is enabled. Used to prevent expensive string formatting before calling one of the printing APIs.
voidtrace_disable(structtrace_key*key)-
Disables tracing for the specified key, even if the environment variable was set.
voidtrace_printf(constchar*format,...)voidtrace_printf_key(structtrace_key*key,constchar*format,...)-
Prints a formatted message, similar to printf.
voidtrace_argv_printf(constchar**argv,constchar*format,...)-
Prints a formatted message, followed by a quoted list of arguments.
voidtrace_strbuf(structtrace_key*key,conststructstrbuf*data)-
Prints the strbuf, without additional formatting (i.e. doesn’t choke on
%or even \0). uint64_tgetnanotime(void)-
Returns nanoseconds since the epoch (01/01/1970), typically used for performance measurements.
Currently there are high precision timer implementations for Linux (using
clock_gettime(CLOCK_MONOTONIC)) and Windows (QueryPerformanceCounter). Other platforms usegettimeofdayas time source. voidtrace_performance(uint64_tnanos,constchar*format,...)voidtrace_performance_since(uint64_tstart,constchar*format,...)-
Prints the elapsed time (in nanoseconds), or elapsed time since
start, followed by a formatted message. Enabled via environment variableGIT_TRACE_PERFORMANCE. Used for manual profiling, e.g.:uint64_t start = getnanotime(); /* code section to measure */ trace_performance_since(start, "foobar");
uint64_t t = 0; for (;;) { /* ignore */ t -= getnanotime(); /* code section to measure */ t += getnanotime(); /* ignore */ } trace_performance(t, "frotz");