about summary refs log tree commit diff
path: root/third_party/git/trace2/tr2_sid.c
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-09-21T10·03+0300
committerVincent Ambo <mail@tazj.in>2021-09-21T11·29+0300
commit43b1791ec601732ac31195df96781a848360a9ac (patch)
treedaae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/trace2/tr2_sid.c
parent2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff)
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping
it in sync with cgit would be easier this way, but it has proven not
to be a big issue.

On the other hand, a vendored copy of git is an annoying maintenance
burden. It is much easier to rebase the single (dottime) patch that we
have.

This removes the vendored copy of git and instead passes the git
source code to cgit via `pkgs.srcOnly`, which includes the applied
patch so that cgit can continue rendering dottime.

Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/trace2/tr2_sid.c')
-rw-r--r--third_party/git/trace2/tr2_sid.c112
1 files changed, 0 insertions, 112 deletions
diff --git a/third_party/git/trace2/tr2_sid.c b/third_party/git/trace2/tr2_sid.c
deleted file mode 100644
index dc6e75ef13..0000000000
--- a/third_party/git/trace2/tr2_sid.c
+++ /dev/null
@@ -1,112 +0,0 @@
-#include "cache.h"
-#include "trace2/tr2_tbuf.h"
-#include "trace2/tr2_sid.h"
-
-#define TR2_ENVVAR_PARENT_SID "GIT_TRACE2_PARENT_SID"
-
-static struct strbuf tr2sid_buf = STRBUF_INIT;
-static int tr2sid_nr_git_parents;
-
-/*
- * Compute the final component of the SID representing the current process.
- * This should uniquely identify the process and be a valid filename (to
- * allow writing trace2 data to per-process files).  It should also be fixed
- * length for possible use as a database key.
- *
- * "<yyyymmdd>T<hhmmss>.<fraction>Z-<host>-<process>"
- *
- * where <host> is a 9 character string:
- *    "H<first_8_chars_of_sha1_of_hostname>"
- *    "Localhost" when no hostname.
- *
- * where <process> is a 9 character string containing the least significant
- * 32 bits in the process-id.
- *    "P<pid>"
- * (This is an abribrary choice.  On most systems pid_t is a 32 bit value,
- * so limit doesn't matter.  On larger systems, a truncated value is fine
- * for our purposes here.)
- */
-static void tr2_sid_append_my_sid_component(void)
-{
-	const struct git_hash_algo *algo = &hash_algos[GIT_HASH_SHA1];
-	struct tr2_tbuf tb_now;
-	git_hash_ctx ctx;
-	pid_t pid = getpid();
-	unsigned char hash[GIT_MAX_RAWSZ + 1];
-	char hex[GIT_MAX_HEXSZ + 1];
-	char hostname[HOST_NAME_MAX + 1];
-
-	tr2_tbuf_utc_datetime(&tb_now);
-	strbuf_addstr(&tr2sid_buf, tb_now.buf);
-
-	strbuf_addch(&tr2sid_buf, '-');
-	if (xgethostname(hostname, sizeof(hostname)))
-		strbuf_add(&tr2sid_buf, "Localhost", 9);
-	else {
-		algo->init_fn(&ctx);
-		algo->update_fn(&ctx, hostname, strlen(hostname));
-		algo->final_fn(hash, &ctx);
-		hash_to_hex_algop_r(hex, hash, algo);
-		strbuf_addch(&tr2sid_buf, 'H');
-		strbuf_add(&tr2sid_buf, hex, 8);
-	}
-
-	strbuf_addf(&tr2sid_buf, "-P%08"PRIx32, (uint32_t)pid);
-}
-
-/*
- * Compute a "unique" session id (SID) for the current process.  This allows
- * all events from this process to have a single label (much like a PID).
- *
- * Export this into our environment so that all child processes inherit it.
- *
- * If we were started by another git instance, use our parent's SID as a
- * prefix.  (This lets us track parent/child relationships even if there
- * is an intermediate shell process.)
- *
- * Additionally, count the number of nested git processes.
- */
-static void tr2_sid_compute(void)
-{
-	const char *parent_sid;
-
-	if (tr2sid_buf.len)
-		return;
-
-	parent_sid = getenv(TR2_ENVVAR_PARENT_SID);
-	if (parent_sid && *parent_sid) {
-		const char *p;
-		for (p = parent_sid; *p; p++)
-			if (*p == '/')
-				tr2sid_nr_git_parents++;
-
-		strbuf_addstr(&tr2sid_buf, parent_sid);
-		strbuf_addch(&tr2sid_buf, '/');
-		tr2sid_nr_git_parents++;
-	}
-
-	tr2_sid_append_my_sid_component();
-
-	setenv(TR2_ENVVAR_PARENT_SID, tr2sid_buf.buf, 1);
-}
-
-const char *tr2_sid_get(void)
-{
-	if (!tr2sid_buf.len)
-		tr2_sid_compute();
-
-	return tr2sid_buf.buf;
-}
-
-int tr2_sid_depth(void)
-{
-	if (!tr2sid_buf.len)
-		tr2_sid_compute();
-
-	return tr2sid_nr_git_parents;
-}
-
-void tr2_sid_release(void)
-{
-	strbuf_release(&tr2sid_buf);
-}