From 87b2ccea9b2fede226ed52f0e6524e2e3ef29205 Mon Sep 17 00:00:00 2001 From: Michael Haggerty Date: Fri, 23 Jun 2017 09:01:34 +0200 Subject: [PATCH] packed_peel_ref(): new function, extracted from `files_peel_ref()` This will later become a method of `packed_ref_store`. Signed-off-by: Michael Haggerty Signed-off-by: Junio C Hamano --- refs/files-backend.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/refs/files-backend.c b/refs/files-backend.c index 48b0a7a25b..92139cfb4e 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -1014,6 +1014,18 @@ out: return ret; } +static int packed_peel_ref(struct packed_ref_store *refs, + const char *refname, unsigned char *sha1) +{ + struct ref_entry *r = get_packed_ref(refs, refname); + + if (!r || peel_entry(r, 0)) + return -1; + + hashcpy(sha1, r->u.value.peeled.hash); + return 0; +} + static int files_peel_ref(struct ref_store *ref_store, const char *refname, unsigned char *sha1) { @@ -1044,17 +1056,9 @@ static int files_peel_ref(struct ref_store *ref_store, * be expensive and (b) loose references anyway usually do not * have REF_KNOWS_PEELED. */ - if (flag & REF_ISPACKED) { - struct ref_entry *r = - get_packed_ref(refs->packed_ref_store, refname); - - if (r) { - if (peel_entry(r, 0)) - return -1; - hashcpy(sha1, r->u.value.peeled.hash); - return 0; - } - } + if (flag & REF_ISPACKED && + !packed_peel_ref(refs->packed_ref_store, refname, sha1)) + return 0; return peel_object(base, sha1); }