Merge branch 'tc/maint-transport-ls-remote-with-void'
authorJunio C Hamano <gitster@pobox.com>
Sun, 21 Feb 2010 20:01:03 +0000 (12:01 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sun, 21 Feb 2010 20:01:03 +0000 (12:01 -0800)
* tc/maint-transport-ls-remote-with-void:
transport: add got_remote_refs flag

transport.c
transport.h
index 3846aacb476b552cefddd8774b9a055e353b6ebc..08e4fa0354d64e2b931be68ed8da111b97273523 100644 (file)
@@ -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;
 }
index 7cea5cc7234185b1c37ada818dfa1a9114621ad2..6dd9ae182fe12c53860a6af02461ff819d59fd6e 100644 (file)
@@ -19,6 +19,12 @@ struct transport {
        void *data;
        const struct ref *remote_refs;
 
+       /**
+        * Indicates whether we already called get_refs_list(); set by
+        * transport.c::transport_get_remote_refs().
+        */
+       unsigned got_remote_refs : 1;
+
        /**
         * Returns 0 if successful, positive if the option is not
         * recognized or is inapplicable, and negative if the option