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