Add ref backend methods for: resolve_ref_unsafe, is_refname_available, pack_refs, peel_ref, create_symref, resolve_gitlink_ref. Signed-off-by: Ronnie Sahlberg <sahlberg@xxxxxxxxxx> --- refs-common.c | 33 +++++++++++++++++++++++++++++++++ refs.c | 22 +++++++++++++++------- refs.h | 19 +++++++++++++++++++ 3 files changed, 67 insertions(+), 7 deletions(-) diff --git a/refs-common.c b/refs-common.c index 68152d6..d9688e2 100644 --- a/refs-common.c +++ b/refs-common.c @@ -885,3 +885,36 @@ int delete_reflog(const char *refname) { return refs->delete_reflog(refname); } + +const char *resolve_ref_unsafe(const char *ref, unsigned char *sha1, + int reading, int *flag) +{ + return refs->resolve_ref_unsafe(ref, sha1, reading, flag); +} + +int is_refname_available(const char *refname, const char **skip, int skipnum) +{ + return refs->is_refname_available(refname, skip, skipnum); +} + +int pack_refs(unsigned int flags, struct strbuf *err) +{ + return refs->pack_refs(flags, err); +} + +int peel_ref(const char *refname, unsigned char *sha1) +{ + return refs->peel_ref(refname, sha1); +} + +int create_symref(const char *ref_target, const char *refs_heads_master, + const char *logmsg) +{ + return refs->create_symref(ref_target, refs_heads_master, logmsg); +} + +int resolve_gitlink_ref(const char *path, const char *refname, + unsigned char *sha1) +{ + return refs->resolve_gitlink_ref(path, refname, sha1); +} diff --git a/refs.c b/refs.c index 699b548..9439809 100644 --- a/refs.c +++ b/refs.c @@ -1114,7 +1114,8 @@ static struct ref_dir *get_loose_refs(struct ref_cache *refs) return get_ref_dir(refs->loose); } -int is_refname_available(const char *refname, const char **skip, int skipnum) +static int files_is_refname_available(const char *refname, const char **skip, + int skipnum) { if (!is_refname_available_dir(refname, get_packed_refs(&ref_cache), skip, skipnum)) @@ -1188,7 +1189,7 @@ static int resolve_gitlink_ref_recursive(struct ref_cache *refs, return resolve_gitlink_ref_recursive(refs, p, sha1, recursion+1); } -int resolve_gitlink_ref(const char *path, const char *refname, unsigned char *sha1) +static int files_resolve_gitlink_ref(const char *path, const char *refname, unsigned char *sha1) { int len = strlen(path), retval; char *submodule; @@ -1247,7 +1248,7 @@ static const char *handle_missing_loose_ref(const char *refname, } /* This function needs to return a meaningful errno on failure */ -const char *resolve_ref_unsafe(const char *refname, unsigned char *sha1, int flags, int *ref_flag) +static const char *files_resolve_ref_unsafe(const char *refname, unsigned char *sha1, int flags, int *ref_flag) { int depth = MAXDEPTH; ssize_t len; @@ -1466,7 +1467,7 @@ 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(const char *refname, unsigned char *sha1) { int flag; unsigned char base[20]; @@ -2080,7 +2081,7 @@ static void prune_refs(struct ref_to_prune *r) } } -int pack_refs(unsigned int flags, struct strbuf *err) +static int files_pack_refs(unsigned int flags, struct strbuf *err) { struct pack_refs_cb_data cbdata; @@ -2453,8 +2454,9 @@ static int write_ref_sha1(struct ref_lock *lock, return 0; } -int create_symref(const char *ref_target, const char *refs_heads_master, - const char *logmsg) +static int files_create_symref(const char *ref_target, + const char *refs_heads_master, + const char *logmsg) { const char *lockpath; char ref[1000]; @@ -3301,6 +3303,12 @@ struct ref_be refs_files = { files_reflog_exists, files_create_reflog, files_delete_reflog, + files_resolve_ref_unsafe, + files_is_refname_available, + files_pack_refs, + files_peel_ref, + files_create_symref, + files_resolve_gitlink_ref, }; struct ref_be *refs = &refs_files; diff --git a/refs.h b/refs.h index 302eb03..ab120c5 100644 --- a/refs.h +++ b/refs.h @@ -384,6 +384,19 @@ typedef int (*reflog_exists_fn)(const char *refname); typedef int (*create_reflog_fn)(const char *refname); typedef int (*delete_reflog_fn)(const char *refname); +typedef const char *(*resolve_ref_unsafe_fn)(const char *ref, + unsigned char *sha1, int reading, int *flag); + +typedef int (*is_refname_available_fn)(const char *refname, const char **skip, + int skipnum); +typedef int (*pack_refs_fn)(unsigned int flags, struct strbuf *err); +typedef int (*peel_ref_fn)(const char *refname, unsigned char *sha1); +typedef int (*create_symref_fn)(const char *ref_target, + const char *refs_heads_master, + const char *logmsg); +typedef int (*resolve_gitlink_ref_fn)(const char *path, const char *refname, + unsigned char *sha1); + struct ref_be { transaction_begin_fn transaction_begin; transaction_update_sha1_fn transaction_update_sha1; @@ -398,6 +411,12 @@ struct ref_be { reflog_exists_fn reflog_exists; create_reflog_fn create_reflog; delete_reflog_fn delete_reflog; + resolve_ref_unsafe_fn resolve_ref_unsafe; + is_refname_available_fn is_refname_available; + pack_refs_fn pack_refs; + peel_ref_fn peel_ref; + create_symref_fn create_symref; + resolve_gitlink_ref_fn resolve_gitlink_ref; }; extern struct ref_be *refs; -- 2.0.1.556.g3edca4c -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html