Add ref backend methods for 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; Signed-off-by: Ronnie Sahlberg <sahlberg@xxxxxxxxxx> --- refs-common.c | 33 +++++++++++++++++++++++++++++++++ refs.c | 23 ++++++++++++++++------- refs.h | 21 +++++++++++++++++++++ 3 files changed, 70 insertions(+), 7 deletions(-) diff --git a/refs-common.c b/refs-common.c index 083964f..45e6fca 100644 --- a/refs-common.c +++ b/refs-common.c @@ -870,3 +870,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 49fd360..c4076f3 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]; @@ -2095,7 +2096,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; @@ -2468,8 +2469,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]; @@ -3317,6 +3319,13 @@ struct ref_be refs_files = { .reflog_exists = files_reflog_exists, .create_reflog = files_create_reflog, .delete_reflog = files_delete_reflog, + + .resolve_ref_unsafe = files_resolve_ref_unsafe, + .is_refname_available = files_is_refname_available, + .pack_refs = files_pack_refs, + .peel_ref = files_peel_ref, + .create_symref = files_create_symref, + .resolve_gitlink_ref = files_resolve_gitlink_ref, }; struct ref_be *refs = &refs_files; diff --git a/refs.h b/refs.h index f630e20..c56bfcd 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; @@ -399,6 +412,14 @@ 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.553.geee1b3e -- 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