pack_one_ref(): do some cheap tests before a more expensive one
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
0f29920f1e
commit
b2a8226d63
11
refs.c
11
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;
|
struct pack_refs_cb_data *cb = cb_data;
|
||||||
enum peel_status peel_status;
|
enum peel_status peel_status;
|
||||||
int is_tag_ref;
|
int is_tag_ref = !prefixcmp(entry->name, "refs/tags/");
|
||||||
|
|
||||||
/* 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/");
|
|
||||||
|
|
||||||
/* ALWAYS pack refs that were already packed or are tags */
|
/* ALWAYS pack refs that were already packed or are tags */
|
||||||
if (!(cb->flags & PACK_REFS_ALL) && !is_tag_ref &&
|
if (!(cb->flags & PACK_REFS_ALL) && !is_tag_ref &&
|
||||||
!(entry->flag & REF_ISPACKED))
|
!(entry->flag & REF_ISPACKED))
|
||||||
return 0;
|
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);
|
peel_status = peel_entry(entry, 1);
|
||||||
if (peel_status != PEEL_PEELED && peel_status != PEEL_NON_TAG)
|
if (peel_status != PEEL_PEELED && peel_status != PEEL_NON_TAG)
|
||||||
die("internal error peeling reference %s (%s)",
|
die("internal error peeling reference %s (%s)",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue