resolve_ref_recursively(): new function

Add a new function, resolve_ref_recursively(), which is basically like the old resolve_ref_unsafe() except that it takes a (ref_store *) argument and also works for submodules. Re-implement resolve_ref_unsafe() as a thin wrapper around resolve_ref_recursively(). Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Michael Haggerty committed Sep 4, 2016 at 18:08 UTC bd40dcda27cc7d6b8b247caa5b650992c5e397fb
1 file changed +11 -3
refs.c
+11 -3
@@ -1216,13 +1216,14 @@ int for_each_rawref(each_ref_fn fn, void *cb_data)
1216 }
1217
1218 /* This function needs to return a meaningful errno on failure */
1219 -const char *resolve_ref_unsafe(const char *refname, int resolve_flags,
1220 - unsigned char *sha1, int *flags)
1219 +static const char *resolve_ref_recursively(struct ref_store *refs,
1220 + const char *refname,
1221 + int resolve_flags,
1222 + unsigned char *sha1, int *flags)
1223 {
1224 static struct strbuf sb_refname = STRBUF_INIT;
1225 int unused_flags;
1226 int symref_count;
1225 - struct ref_store *refs = get_ref_store(NULL);
1227
1228 if (!flags)
1229 flags = &unused_flags;
@@ -1291,6 +1292,13 @@ const char *resolve_ref_unsafe(const char *refname, int resolve_flags,
1292 return NULL;
1293 }
1294
1295 +const char *resolve_ref_unsafe(const char *refname, int resolve_flags,
1296 + unsigned char *sha1, int *flags)
1297 +{
1298 + return resolve_ref_recursively(get_ref_store(NULL), refname,
1299 + resolve_flags, sha1, flags);
1300 +}
1301 +
1302 /* A pointer to the ref_store for the main repository: */
1303 static struct ref_store *main_ref_store;
1304