]> git.ipfire.org Git - thirdparty/git.git/commitdiff
receive-pack: advertise session ID in v0 capabilities
authorJosh Steadmon <steadmon@google.com>
Wed, 11 Nov 2020 23:29:28 +0000 (15:29 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 12 Nov 2020 02:26:53 +0000 (18:26 -0800)
When transfer.advertiseSID is true, advertise receive-pack's session ID
via the new session-id capability.

Signed-off-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/receive-pack.c

index bb9909c52e4e01e0ab37dbd020138ba254d44b51..6ed498b6c73e42f29ec5029d30f37b1d66997af0 100644 (file)
@@ -54,6 +54,7 @@ static int receive_unpack_limit = -1;
 static int transfer_unpack_limit = -1;
 static int advertise_atomic_push = 1;
 static int advertise_push_options;
+static int advertise_sid;
 static int unpack_limit = 100;
 static off_t max_input_size;
 static int report_status;
@@ -248,6 +249,11 @@ static int receive_pack_config(const char *var, const char *value, void *cb)
                return 0;
        }
 
+       if (strcmp(var, "transfer.advertisesid") == 0) {
+               advertise_sid = git_config_bool(var, value);
+               return 0;
+       }
+
        return git_default_config(var, value, cb);
 }
 
@@ -268,6 +274,8 @@ static void show_ref(const char *path, const struct object_id *oid)
                        strbuf_addf(&cap, " push-cert=%s", push_cert_nonce);
                if (advertise_push_options)
                        strbuf_addstr(&cap, " push-options");
+               if (advertise_sid)
+                       strbuf_addf(&cap, " session-id=%s", trace2_session_id());
                strbuf_addf(&cap, " object-format=%s", the_hash_algo->name);
                strbuf_addf(&cap, " agent=%s", git_user_agent_sanitized());
                packet_write_fmt(1, "%s %s%c%s\n",