]> asedeno.scripts.mit.edu Git - git.git/blobdiff - refs.c
Merge branch 'ac/cvsimport-revision-mapping'
[git.git] / refs.c
diff --git a/refs.c b/refs.c
index 34fff75b0d2062b7c7445864fe9f9d70962b1bee..f3fcbe023a3e6a8abae9bf04d10911056d12a4b0 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -690,20 +690,23 @@ int for_each_replace_ref(each_ref_fn fn, void *cb_data)
        return do_for_each_ref("refs/replace/", fn, 13, 0, cb_data);
 }
 
-int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data)
+int for_each_glob_ref_in(each_ref_fn fn, const char *pattern,
+       const char *prefix, void *cb_data)
 {
        struct strbuf real_pattern = STRBUF_INIT;
        struct ref_filter filter;
        const char *has_glob_specials;
        int ret;
 
-       if (prefixcmp(pattern, "refs/"))
+       if (!prefix && prefixcmp(pattern, "refs/"))
                strbuf_addstr(&real_pattern, "refs/");
+       else if (prefix)
+               strbuf_addstr(&real_pattern, prefix);
        strbuf_addstr(&real_pattern, pattern);
 
        has_glob_specials = strpbrk(pattern, "?*[");
        if (!has_glob_specials) {
-               /* Append impiled '/' '*' if not present. */
+               /* Append implied '/' '*' if not present. */
                if (real_pattern.buf[real_pattern.len - 1] != '/')
                        strbuf_addch(&real_pattern, '/');
                /* No need to check for '*', there is none. */
@@ -719,6 +722,11 @@ int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data)
        return ret;
 }
 
+int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data)
+{
+       return for_each_glob_ref_in(fn, pattern, NULL, cb_data);
+}
+
 int for_each_rawref(each_ref_fn fn, void *cb_data)
 {
        return do_for_each_ref("refs/", fn, 0,