diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2008-03-03 22:27:40 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-03-04 23:28:15 -0800 |
commit | 41fa7d2eaeace0c5c23fc75a3d5cc9efbad467a5 (patch) | |
tree | bdb177268b0c4ba90076e1e6c39cb22aa890570f /transport.h | |
parent | 348e390b17e7a2b0618fbbfe8cdefa3d73ecbea2 (diff) | |
download | git-41fa7d2eaeace0c5c23fc75a3d5cc9efbad467a5.tar.gz |
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>
Diffstat (limited to 'transport.h')
-rw-r--r-- | transport.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/transport.h b/transport.h index 6fb4526cda..8abfc0ae60 100644 --- a/transport.h +++ b/transport.h @@ -53,6 +53,9 @@ struct transport *transport_get(struct remote *, const char *); /* Limit the depth of the fetch if not null */ #define TRANS_OPT_DEPTH "depth" +/* Aggressively fetch annotated tags if possible */ +#define TRANS_OPT_FOLLOWTAGS "followtags" + /** * Returns 0 if the option was used, non-zero otherwise. Prints a * message to stderr if the option is not used. |