diff options
author | Tay Ray Chuan <rctay89@gmail.com> | 2010-02-16 15:18:21 +0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-02-16 09:11:22 -0800 |
commit | b0d66e156c5b312d468344569202d8ca4094f67f (patch) | |
tree | e4b403de21e001de39b390d74f695a0162ebf60d /transport.c | |
parent | e923eaeb901ff056421b9007adcbbce271caa7b6 (diff) | |
download | git-b0d66e156c5b312d468344569202d8ca4094f67f.tar.gz |
transport: add got_remote_refs flag
transport_get_remote_refs() in tranport.c checks transport->remote_refs
to determine whether transport->get_refs_list() should be invoked. The
logic is "if it is NULL, we haven't run ls-remote to find out yet".
However, transport->remote_refs could still be NULL while cloning from
an empty repository. This causes get_refs_list() to be run unnecessarily.
Introduce a flag, transport->got_remote_refs, to more explicitly record
if we have run transport->get_refs_list() already.
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'transport.c')
-rw-r--r-- | transport.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/transport.c b/transport.c index 3846aacb47..08e4fa0354 100644 --- a/transport.c +++ b/transport.c @@ -918,6 +918,7 @@ struct transport *transport_get(struct remote *remote, const char *url) if (!remote) die("No remote provided to transport_get()"); + ret->got_remote_refs = 0; ret->remote = remote; helper = remote->foreign_vcs; @@ -1079,8 +1080,10 @@ int transport_push(struct transport *transport, const struct ref *transport_get_remote_refs(struct transport *transport) { - if (!transport->remote_refs) + if (!transport->got_remote_refs) { transport->remote_refs = transport->get_refs_list(transport, 0); + transport->got_remote_refs = 1; + } return transport->remote_refs; } |