[PATCH 1/2] refs.c: add resolve_ref_submodule()
From: Nguyễn Thái Ngọc Duy <hidden>
Date: 2017-02-08 11:32:13
Subsystem:
the rest · Maintainer:
Linus Torvalds
This is basically the extended version of resolve_gitlink_ref() where we have access to more info from the underlying resolve_ref_recursively() call. Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- refs.c | 20 ++++++++++++++------ refs.h | 3 +++ 2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/refs.c b/refs.c
index cd36b64ed9..02e35d83f3 100644
--- a/refs.c
+++ b/refs.c@@ -1325,18 +1325,18 @@ const char *resolve_ref_unsafe(const char *refname, int resolve_flags, resolve_flags, sha1, flags); } -int resolve_gitlink_ref(const char *submodule, const char *refname, - unsigned char *sha1) +const char *resolve_ref_submodule(const char *submodule, const char *refname, + int resolve_flags, unsigned char *sha1, + int *flags) { size_t len = strlen(submodule); struct ref_store *refs; - int flags; while (len && submodule[len - 1] == '/') len--; if (!len) - return -1; + return NULL; if (submodule[len]) { /* We need to strip off one or more trailing slashes */
@@ -1349,9 +1349,17 @@ int resolve_gitlink_ref(const char *submodule, const char *refname, } if (!refs) - return -1; + return NULL; + + return resolve_ref_recursively(refs, refname, resolve_flags, sha1, flags); +} + +int resolve_gitlink_ref(const char *submodule, const char *refname, + unsigned char *sha1) +{ + int flags; - if (!resolve_ref_recursively(refs, refname, 0, sha1, &flags) || + if (!resolve_ref_submodule(submodule, refname, 0, sha1, &flags) || is_null_sha1(sha1)) return -1; return 0;
diff --git a/refs.h b/refs.h
index 9fbff90e79..74542468d8 100644
--- a/refs.h
+++ b/refs.h@@ -88,6 +88,9 @@ int peel_ref(const char *refname, unsigned char *sha1); */ int resolve_gitlink_ref(const char *submodule, const char *refname, unsigned char *sha1); +const char *resolve_ref_submodule(const char *submodule, const char *refname, + int resolve_flags, unsigned char *sha1, + int *flags); /* * Return true iff abbrev_name is a possible abbreviation for
--
2.11.0.157.gd943d85