From b2a8226d6360fc6e19af134236b3dd11f9d2040e Mon Sep 17 00:00:00 2001 From: Michael Haggerty Date: Mon, 22 Apr 2013 21:52:39 +0200 Subject: [PATCH] pack_one_ref(): do some cheap tests before a more expensive one Signed-off-by: Michael Haggerty Signed-off-by: Junio C Hamano --- refs.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/refs.c b/refs.c index 00174e9498..717aa54c03 100644 --- 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)", -- 2.40.0