Skip to content

Commit

Permalink
Teach upload-pack to log the received need lines to an fd
Browse files Browse the repository at this point in the history
To facilitate testing and verification of the requests sent by
git-fetch to the remote side we permit logging the received packet
lines to the file descriptor specified in 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=3 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@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Shawn O. Pearce authored and Junio C Hamano committed Mar 3, 2008
1 parent 49d58fd commit 49aaddd
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions upload-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ static unsigned int timeout;
* otherwise maximum packet size (up to 65520 bytes).
*/
static int use_sideband;
static int debug_fd;

static void reset_timeout(void)
{
Expand Down Expand Up @@ -444,13 +445,17 @@ static void receive_needs(void)
static char line[1000];
int len, depth = 0;

if (debug_fd)
write_in_full(debug_fd, "#S\n", 3);
for (;;) {
struct object *o;
unsigned char sha1_buf[20];
len = packet_read_line(0, line, sizeof(line));
reset_timeout();
if (!len)
break;
if (debug_fd)
write_in_full(debug_fd, line, len);

if (!prefixcmp(line, "shallow ")) {
unsigned char sha1[20];
Expand Down Expand Up @@ -506,6 +511,8 @@ static void receive_needs(void)
add_object_array(o, NULL, &want_obj);
}
}
if (debug_fd)
write_in_full(debug_fd, "#E\n", 3);
if (depth == 0 && shallows.nr == 0)
return;
if (depth > 0) {
Expand Down Expand Up @@ -631,6 +638,8 @@ int main(int argc, char **argv)
die("'%s': unable to chdir or not a git archive", dir);
if (is_repository_shallow())
die("attempt to fetch/clone from a shallow repository");
if (getenv("GIT_DEBUG_SEND_PACK"))
debug_fd = atoi(getenv("GIT_DEBUG_SEND_PACK"));
upload_pack();
return 0;
}

0 comments on commit 49aaddd

Please sign in to comment.