diff options
author | Michael Haggerty <mhagger@alum.mit.edu> | 2016-09-04 18:08:29 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-09-09 15:28:13 -0700 |
commit | bd427cf27f561174fa8fa14e2c8c321d2df82c47 (patch) | |
tree | ff7ea5006c12bd3ddecc0fd217eb7c8fec627e44 | |
parent | refs: make create_symref() virtual (diff) | |
download | tgif-bd427cf27f561174fa8fa14e2c8c321d2df82c47.tar.xz |
refs: make peel_ref() virtual
For now it only supports the main reference store.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | refs.c | 7 | ||||
-rw-r--r-- | refs/files-backend.c | 6 | ||||
-rw-r--r-- | refs/refs-internal.h | 3 |
3 files changed, 14 insertions, 2 deletions
@@ -1428,6 +1428,13 @@ int pack_refs(unsigned int flags) return refs->be->pack_refs(refs, flags); } +int peel_ref(const char *refname, unsigned char *sha1) +{ + struct ref_store *refs = get_ref_store(NULL); + + return refs->be->peel_ref(refs, refname, sha1); +} + int create_symref(const char *ref_target, const char *refs_heads_master, const char *logmsg) { diff --git a/refs/files-backend.c b/refs/files-backend.c index fc67cc6ec7..af3ad83fe5 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -1759,9 +1759,10 @@ static enum peel_status peel_entry(struct ref_entry *entry, int repeel) return status; } -int peel_ref(const char *refname, unsigned char *sha1) +static int files_peel_ref(struct ref_store *ref_store, + const char *refname, unsigned char *sha1) { - struct files_ref_store *refs = get_files_ref_store(NULL, "peel_ref"); + struct files_ref_store *refs = files_downcast(ref_store, 0, "peel_ref"); int flag; unsigned char base[20]; @@ -4027,6 +4028,7 @@ struct ref_storage_be refs_be_files = { files_transaction_commit, files_pack_refs, + files_peel_ref, files_create_symref, files_read_raw_ref, diff --git a/refs/refs-internal.h b/refs/refs-internal.h index bf96503856..84c81ad08e 100644 --- a/refs/refs-internal.h +++ b/refs/refs-internal.h @@ -501,6 +501,8 @@ typedef int ref_transaction_commit_fn(struct ref_store *refs, struct strbuf *err); typedef int pack_refs_fn(struct ref_store *ref_store, unsigned int flags); +typedef int peel_ref_fn(struct ref_store *ref_store, + const char *refname, unsigned char *sha1); typedef int create_symref_fn(struct ref_store *ref_store, const char *ref_target, const char *refs_heads_master, @@ -561,6 +563,7 @@ struct ref_storage_be { ref_transaction_commit_fn *transaction_commit; pack_refs_fn *pack_refs; + peel_ref_fn *peel_ref; create_symref_fn *create_symref; read_raw_ref_fn *read_raw_ref; |