To facilitate testing and verification of the requests sent by git-fetch to the remote side we permit logging the received packet lines to file descriptor 3 if GIT_DEBUG_SEND_PACK has been set. Special start and end lines are included to indicate the start and end of each connection. $ GIT_DEBUG_SEND_PACK=1 git fetch 3>UPLOAD_LOG $ cat UPLOAD_LOG #S want 8e10cf4e007ad7e003463c30c34b1050b039db78 multi_ack side-band-64k thin-pack ofs-delta want ddfa4a33562179aca1ace2bcc662244a17d0b503 #E #S want 3253df4d1cf6fb138b52b1938473bcfec1483223 multi_ack side-band-64k thin-pack ofs-delta #E >From the above trace the first connection opened by git-fetch was to download two refs (with values 8e and dd) and the second connection was opened to automatically follow an annotated tag (32). Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx> --- upload-pack.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/upload-pack.c b/upload-pack.c index b26d053..4e14020 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -444,7 +444,10 @@ static void receive_needs(void) struct object_array shallows = {0, 0, NULL}; static char line[1000]; int len, depth = 0; + int debug_needs = !!getenv("GIT_DEBUG_SEND_PACK"); + if (debug_needs) + write_in_full(3, "#S\n", 3); for (;;) { struct object *o; unsigned char sha1_buf[20]; @@ -452,6 +455,8 @@ static void receive_needs(void) reset_timeout(); if (!len) break; + if (debug_needs) + write_in_full(3, line, len); if (!prefixcmp(line, "shallow ")) { unsigned char sha1[20]; @@ -507,6 +512,8 @@ static void receive_needs(void) add_object_array(o, NULL, &want_obj); } } + if (debug_needs) + write_in_full(3, "#E\n", 3); if (depth == 0 && shallows.nr == 0) return; if (depth > 0) { -- 1.5.4.3.409.g88113 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html