On Thu, Oct 04, 2012 at 09:39:02AM -0700, Junio C Hamano wrote: > Assuming that we do want to match "x/y" with "x/**/y", I suspect > that "'**' matches anything including a slash" would not give us > that semantics. Is it something we can easily fix in the wildmatch > code? Something like this may suffice. Lightly tested with "git add -n". Reading the code, I think we can even distinguish "match zero or more directories" and "match one or more directories" with "/**/" and maybe "/***/". Right now **, ***, ****... are the same. So are /**/, /***/, /****/... -- 8< -- diff --git a/wildmatch.c b/wildmatch.c index f153f8a..81eadc8 100644 --- a/wildmatch.c +++ b/wildmatch.c @@ -98,8 +98,12 @@ static int dowild(const uchar *p, const uchar *text, continue; case '*': if (*++p == '*') { + int slashstarstar = p[-2] == '/'; while (*++p == '*') {} special = TRUE; + if (slashstarstar && *p == '/' && + dowild(p + 1, text, a, force_lower_case) == TRUE) + return TRUE; } else special = FALSE; if (*p == '\0') { -- 8< -- -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html