From 2bf68ed5aa79fcccba6ea4c021b15e51c019a85e Mon Sep 17 00:00:00 2001 From: David Turner Date: Thu, 7 Apr 2016 15:02:48 -0400 Subject: refs: move head_ref{,_submodule} to the common code These don't use any backend-specific functions. These were previously defined in terms of the do_head_ref helper function, but since they are otherwise identical, we don't need that function. Signed-off-by: David Turner Reviewed-by: Michael Haggerty Signed-off-by: Junio C Hamano --- refs.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'refs.c') diff --git a/refs.c b/refs.c index b0e6ece6f..6b8c16cdd 100644 --- a/refs.c +++ b/refs.c @@ -1080,3 +1080,26 @@ int rename_ref_available(const char *oldname, const char *newname) strbuf_release(&err); return ret; } + +int head_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data) +{ + struct object_id oid; + int flag; + + if (submodule) { + if (resolve_gitlink_ref(submodule, "HEAD", oid.hash) == 0) + return fn("HEAD", &oid, 0, cb_data); + + return 0; + } + + if (!read_ref_full("HEAD", RESOLVE_REF_READING, oid.hash, &flag)) + return fn("HEAD", &oid, flag, cb_data); + + return 0; +} + +int head_ref(each_ref_fn fn, void *cb_data) +{ + return head_ref_submodule(NULL, fn, cb_data); +} -- cgit v1.2.1