In order to more easily debug remote operations, it is useful to be able to inspect both client-side and server-side traces. This series allows clients to record the server's trace2 session ID, and vice versa, by advertising the SID in a new "trace2-sid" protocol capability. Two questions in particular for reviewers: 1) Is trace2/tr2_sid.h intended to be visible to the rest of the code, or is the trace2/ directory supposed to be opaque implementation detail? If the latter, would it be acceptable to move tr2_sid_get() into trace2.h? 2) upload-pack generally takes configuration via flags rather than gitconfig. From offline discussions, it sounds like this is an intentional choice to limit potential vulnerability from malicious configs in local repositories accessed via the file:// URL scheme. Is it reasonable to load the trace2.announceSID option from config files in upload-pack, or should this be changed to a flag? Josh Steadmon (10): docs: new capability to advertise trace2 SIDs docs: new trace2.advertiseSID option upload-pack: advertise trace2 SID in v0 capabilities receive-pack: advertise trace2 SID in v0 capabilities serve: advertise trace2 SID in v2 capabilities transport: log received server trace2 SID fetch-pack: advertise trace2 SID in capabilities upload-pack, serve: log received client trace2 SID send-pack: advertise trace2 SID in capabilities receive-pack: log received client trace2 SID Documentation/config/trace2.txt | 4 + .../technical/protocol-capabilities.txt | 13 ++- Documentation/technical/protocol-v2.txt | 9 +++ builtin/receive-pack.c | 16 ++++ fetch-pack.c | 11 +++ send-pack.c | 9 +++ serve.c | 19 +++++ t/t5705-trace2-sid-in-capabilities.sh | 79 +++++++++++++++++++ transport.c | 10 +++ upload-pack.c | 23 +++++- 10 files changed, 190 insertions(+), 3 deletions(-) create mode 100755 t/t5705-trace2-sid-in-capabilities.sh -- 2.29.1.341.ge80a0c044ae-goog