summaryrefslogtreecommitdiff
path: root/refs.c
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2011-03-15 00:59:39 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-03-15 19:11:28 (GMT)
commit761ecf0bc7b6cddf311f00877c59e6381cdbdeea (patch)
treec3bda9a1b38740845d0e8a2ef8e7378b9da71efb /refs.c
parentf2cba9299be45f8e027f7b45c6e4a3cae55576c6 (diff)
downloadgit-761ecf0bc7b6cddf311f00877c59e6381cdbdeea.zip
git-761ecf0bc7b6cddf311f00877c59e6381cdbdeea.tar.gz
git-761ecf0bc7b6cddf311f00877c59e6381cdbdeea.tar.bz2
fetch-pack: Implement no-done capability
If enabled on the connection "multi_ack_detailed no-done" as a pair allows the remote upload-pack process to send a PACK down to the client as soon as a "ACK %s ready" message was also sent. Over git:// and ssh:// where a bi-directional stream is in place this has very little difference over the classical version that waits for the client to send a "done\n" line by itself. It does slightly reduce the latency involved to start the pack stream as there is one less round-trip from client->server required. Over smart HTTP this avoids needing to send a final RPC that has all of the prior common objects. Instead the server is able to return a pack as soon as its ready to. For many common users the smart HTTP fetch is now just 2 requests: GET .../info/refs, and a POST .../git-upload-pack to not only negotiate but also receive the pack stream. Only users who have more than 32 local unshared commits with the remote will need additional requests to negotiate a common merge base. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs.c')
0 files changed, 0 insertions, 0 deletions