Re: [PATCH] Document the underlying protocol used by shallow repositories and --depth commands.
Junio C Hamano <gitster <at> pobox.com> writes:
Show 14 quoted lines
> "The same event which was already described in that document" meaning at
> the beginning of "Packfile Negotiation" section? That is primarily about
> the "ls-remote" that probed the server for the list of current refs, which
> is received in connect.c::get_remote_heads(), but it also covers another
> case. When fetching, after connect.c::get_remote_heads() finds the list of
> current refs, do_fetch_pack() is called, and then everything_local() in it
> checks if we have all the objects we are going to ask. If so, we flush and
> jump to all_done to terminate the connection, skipping find_common(),
> without doing any of the want/shallow/depth/etc.
>
> I don't seem to be able to find where in find_common() and its callee we
> could quit without telling the server anything (unless we crash . Even
> if get_rev() loop finds nothing, we would at least say "done".
>
The part of the document I'm referring to starts at line 221 and reads:
Once all the "want"s (and optional 'deepen') are transferred,
clients MUST send a flush-pkt. If the client has all the references
on the server, client flushes and disconnects.
And I believe this refers to the code path beginning at line 308 of fetch-pack.c:
if (!fetching) {
strbuf_release(&req_buf);
packet_flush(fd[1]);
return 1;
}Am I wrong?