]> granicus.if.org Git - git/commitdiff
pack_one_ref(): do some cheap tests before a more expensive one
authorMichael Haggerty <mhagger@alum.mit.edu>
Mon, 22 Apr 2013 19:52:39 +0000 (21:52 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 1 May 2013 22:33:11 +0000 (15:33 -0700)
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs.c

diff --git a/refs.c b/refs.c
index 00174e9498a7f6e904230e7056a0539bbc9c8e60..717aa54c039a4fc33357e0862bc28175bef017f4 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -2008,18 +2008,17 @@ static int pack_one_ref(struct ref_entry *entry, void *cb_data)
 {
        struct pack_refs_cb_data *cb = cb_data;
        enum peel_status peel_status;
-       int is_tag_ref;
-
-       /* Do not pack symbolic or broken refs: */
-       if ((entry->flag & REF_ISSYMREF) || !ref_resolves_to_object(entry))
-               return 0;
-       is_tag_ref = !prefixcmp(entry->name, "refs/tags/");
+       int is_tag_ref = !prefixcmp(entry->name, "refs/tags/");
 
        /* ALWAYS pack refs that were already packed or are tags */
        if (!(cb->flags & PACK_REFS_ALL) && !is_tag_ref &&
            !(entry->flag & REF_ISPACKED))
                return 0;
 
+       /* Do not pack symbolic or broken refs: */
+       if ((entry->flag & REF_ISSYMREF) || !ref_resolves_to_object(entry))
+               return 0;
+
        peel_status = peel_entry(entry, 1);
        if (peel_status != PEEL_PEELED && peel_status != PEEL_NON_TAG)
                die("internal error peeling reference %s (%s)",