In its current form, when an user wants to filter specific ref using
--refs option, she needs to give something like --refs=refs/tags/v1.*.

This is not intuitive as users might think it's enough to give just
actual tag name part like --refs=v1.*.  It applies to refs other than
just tags too.  Change it for users to be able to use --refs=sth or
--refs=remotes/sth.

Also remove the leading 'tags/' part in the output when --tags option
was given since the option restricts to work with tags only.  This is
what we have if --name-only option was given also.

Signed-off-by: Namhyung Kim <namhyung....@lge.com>
---
 builtin/name-rev.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/builtin/name-rev.c b/builtin/name-rev.c
index 6238247..446743b 100644
--- a/builtin/name-rev.c
+++ b/builtin/name-rev.c
@@ -97,7 +97,8 @@ static int name_ref(const char *path, const unsigned char 
*sha1, int flags, void
        if (data->tags_only && prefixcmp(path, "refs/tags/"))
                return 0;
 
-       if (data->ref_filter && fnmatch(data->ref_filter, path, 0))
+       if (data->ref_filter && !prefixcmp(data->ref_filter, "refs/")
+           && fnmatch(data->ref_filter, path, 0))
                return 0;
 
        while (o && o->type == OBJ_TAG) {
@@ -113,12 +114,15 @@ static int name_ref(const char *path, const unsigned char 
*sha1, int flags, void
                if (!prefixcmp(path, "refs/heads/"))
                        path = path + 11;
                else if (data->tags_only
-                   && data->name_only
                    && !prefixcmp(path, "refs/tags/"))
                        path = path + 10;
                else if (!prefixcmp(path, "refs/"))
                        path = path + 5;
 
+               if (data->ref_filter && prefixcmp(data->ref_filter, "refs/")
+                   && fnmatch(data->ref_filter, path, 0))
+                       return 0;
+
                name_rev(commit, xstrdup(path), 0, 0, deref);
        }
        return 0;
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to