From: Michael Haggerty Date: Fri, 23 Jun 2017 07:01:34 +0000 (+0200) Subject: packed_peel_ref(): new function, extracted from `files_peel_ref()` X-Git-Tag: v2.15.0-rc0~156^2~16 X-Git-Url: http://git.bitbasher.net/?a=commitdiff_plain;h=6dc6ba7092423dfd5b94b9dcb649f2905d456d94;p=git.git 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 --- diff --git a/refs/files-backend.c b/refs/files-backend.c index c206791b91..185d05e1d6 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -1013,6 +1013,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) { @@ -1043,17 +1055,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); }