clone.c: move more code into the "if (refs)" conditional
authorMichael Haggerty <mhagger@alum.mit.edu>
Sat, 11 Feb 2012 06:20:56 +0000 (07:20 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Feb 2012 03:50:39 +0000 (19:50 -0800)
The bahavior of a bunch of code before the "if (refs)" statement also
depends on whether refs is set, so make the logic clearer by shifting
this code into the if statement.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/clone.c

index c62d4b5737ed41f3c7a2d9cbec3b77651236a467..279fdf0d252618b6fec648036f87141c61c03466 100644 (file)
@@ -813,28 +813,28 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
        }
 
        refs = transport_get_remote_refs(transport);
-       mapped_refs = refs ? wanted_peer_refs(refs, refspec) : NULL;
 
-       /*
-        * transport_get_remote_refs() may return refs with null sha-1
-        * in mapped_refs (see struct transport->get_refs_list
-        * comment). In that case we need fetch it early because
-        * remote_head code below relies on it.
-        *
-        * for normal clones, transport_get_remote_refs() should
-        * return reliable ref set, we can delay cloning until after
-        * remote HEAD check.
-        */
-       for (ref = refs; ref; ref = ref->next)
-               if (is_null_sha1(ref->old_sha1)) {
-                       complete_refs_before_fetch = 0;
-                       break;
-               }
+       if (refs) {
+               mapped_refs = wanted_peer_refs(refs, refspec);
+               /*
+                * transport_get_remote_refs() may return refs with null sha-1
+                * in mapped_refs (see struct transport->get_refs_list
+                * comment). In that case we need fetch it early because
+                * remote_head code below relies on it.
+                *
+                * for normal clones, transport_get_remote_refs() should
+                * return reliable ref set, we can delay cloning until after
+                * remote HEAD check.
+                */
+               for (ref = refs; ref; ref = ref->next)
+                       if (is_null_sha1(ref->old_sha1)) {
+                               complete_refs_before_fetch = 0;
+                               break;
+                       }
 
-       if (!is_local && !complete_refs_before_fetch && refs)
-               transport_fetch_refs(transport, mapped_refs);
+               if (!is_local && !complete_refs_before_fetch)
+                       transport_fetch_refs(transport, mapped_refs);
 
-       if (refs) {
                remote_head = find_ref_by_name(refs, "HEAD");
                remote_head_points_at =
                        guess_remote_head(remote_head, mapped_refs, 0);
@@ -852,6 +852,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
        }
        else {
                warning(_("You appear to have cloned an empty repository."));
+               mapped_refs = NULL;
                our_head_points_at = NULL;
                remote_head_points_at = NULL;
                remote_head = NULL;