]> git.ipfire.org Git - thirdparty/git.git/commitdiff
connect, protocol: log negotiated protocol version
authorJosh Steadmon <steadmon@google.com>
Tue, 10 Aug 2021 17:20:39 +0000 (10:20 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 10 Aug 2021 18:46:33 +0000 (11:46 -0700)
It is useful for performance monitoring and debugging purposes to know
the wire protocol used for remote operations. This may differ from the
version set in local configuration due to differences in version and/or
configuration between the server and the client. Therefore, log the
negotiated wire protocol version via trace2, for both clients and
servers.

Signed-off-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
connect.c
protocol.c
t/t5705-session-id-in-capabilities.sh

index 70b13389ba5f706045b2b77114fa6f4797b58d28..aff13a270e675373c46e78a41409079b20d9921d 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -164,6 +164,8 @@ enum protocol_version discover_version(struct packet_reader *reader)
                BUG("unknown protocol version");
        }
 
+       trace2_data_intmax("transfer", NULL, "negotiated-version", version);
+
        return version;
 }
 
index 052d7edbb9a332c40a4bde7db85bed14564df51c..c53f7df5be4abae7a4f5792f42e4c4ecac006e9a 100644 (file)
@@ -73,6 +73,8 @@ enum protocol_version determine_protocol_version_server(void)
                string_list_clear(&list, 0);
        }
 
+       trace2_data_intmax("transfer", NULL, "negotiated-version", version);
+
        return version;
 }
 
index f1d189d5bcc443c3abf8a62939b04ff3006ccf1a..eb8c79aafdd6aa4d203ff6d8ab85a191c37a5d9b 100755 (executable)
@@ -73,6 +73,17 @@ do
                grep \"key\":\"server-sid\" tr2-client-events &&
                grep \"key\":\"client-sid\" tr2-server-events
        '
+
+       test_expect_success "client & server log negotiated version (v${PROTO})" '
+               test_when_finished "rm -rf local tr2-client-events tr2-server-events" &&
+               cp -r "$LOCAL_PRISTINE" local &&
+               GIT_TRACE2_EVENT="$(pwd)/tr2-client-events" \
+               git -c protocol.version=$PROTO -C local fetch \
+                       --upload-pack "GIT_TRACE2_EVENT=\"$(pwd)/tr2-server-events\" git-upload-pack" \
+                       origin &&
+               grep \"key\":\"negotiated-version\",\"value\":\"$PROTO\" tr2-client-events &&
+               grep \"key\":\"negotiated-version\",\"value\":\"$PROTO\" tr2-server-events
+       '
 done
 
 test_done