Normally your own namespace is known and you only need to skip that prefix,
but when you need to classify the type of a ref
it helps to be able to consider what type of ref it would be
if it were outside of a namespace.
---
git-compat-util.h | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/git-compat-util.h b/git-compat-util.h
index db9c22d..c5e0a34 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -501,6 +501,25 @@ static inline int skip_prefix_mem(const char *buf, size_t
len,
return 0;
}
+static inline int skip_namespace(const char *refname, const char **out)
+{
+ const char *c = refname;
+
+ while (skip_prefix(c, "refs/namespaces/", &c)) {
+ c = strchr(c, '/');
+ if (!c)
+ return 0;
+
+ c++;
+ }
+
+ if (c == refname)
+ return 0;
+
+ *out = c;
+ return 1;
+}
+
/*
* If buf ends with suffix, return 1 and subtract the length of the suffix
* from *len. Otherwise, return 0 and leave *len untouched.
--
2.9.0