Teach git-fetch to exploit server side automatic tag following
authorShawn O. Pearce <spearce@spearce.org>
Tue, 4 Mar 2008 03:27:40 +0000 (22:27 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 5 Mar 2008 07:28:15 +0000 (23:28 -0800)
commit41fa7d2eaeace0c5c23fc75a3d5cc9efbad467a5
treebdb177268b0c4ba90076e1e6c39cb22aa890570f
parent348e390b17e7a2b0618fbbfe8cdefa3d73ecbea2
Teach git-fetch to exploit server side automatic tag following

If the remote peer upload-pack process supports the include-tag
protocol extension then we can avoid running a second fetch cycle
on the client side by letting the server send us the annotated tags
along with the objects it is packing for us.  In the following graph
we can now fetch both "tag1" and "tag2" on the same connection that
we fetched "master" from the remote when we only have L available
on the local side:

         T - tag1          S - tag2
        /                 /
   L - o ------ o ------ B
    \                     \
     \                     \
      origin/master         master

The objects for "tag1" are implicitly downloaded without our direct
knowledge.  The existing "quickfetch" optimization within git-fetch
discovers that tag1 is complete after the first connection and does
not open a second connection.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-fetch.c
t/t5503-tagfollow.sh
transport.c
transport.h