On Thu, Dec 20, 2012 at 08:28:57AM +0700, Nguyen Thai Ngoc Duy wrote: > > So I think this is a nice, simple approach for sites that want it, and > > noglob magic can come later (and will not be any harder to implement as > > a result of this patch). > > Any chance to make use of nd/pathspec-wildcard? It changes the same > code path in match_one. If you base on top of nd/pathspec-wildcard, > all you have to do is assign nowildcard_len to len (i.e. no wildcard > part). I'd rather keep it separate for now. One, just because they really are independent topics, and two, because I am actually back-porting it for GitHub (we are fairly conservative about upgrading our backend git versions, as most of the interesting stuff happens on the client side; I cherry-pick critical patches with no regard to the release cycle). And the resolution is pretty trivial, too. It looks like this: diff --cc dir.c index 5c0e5f6,03ff36b..81cb439 --- a/dir.c +++ b/dir.c @@@ -1456,14 -1433,10 +1460,18 @@@ int init_pathspec(struct pathspec *path item->match = path; item->len = strlen(path); - item->nowildcard_len = simple_length(path); - item->use_wildcard = !limit_pathspec_to_literal() && - !no_wildcard(path); - if (item->use_wildcard) - pathspec->has_wildcard = 1; + item->flags = 0; - if (item->nowildcard_len < item->len) { - pathspec->has_wildcard = 1; - if (path[item->nowildcard_len] == '*' && - no_wildcard(path + item->nowildcard_len + 1)) - item->flags |= PATHSPEC_ONESTAR; ++ if (limit_pathspec_to_literal()) ++ item->nowildcard_len = item->len; ++ else { ++ item->nowildcard_len = simple_length(path); ++ if (item->nowildcard_len < item->len) { ++ pathspec->has_wildcard = 1; ++ if (path[item->nowildcard_len] == '*' && ++ no_wildcard(path + item->nowildcard_len + 1)) ++ item->flags |= PATHSPEC_ONESTAR; ++ } + } } qsort(pathspec->items, pathspec->nr, Not re-indenting the conditional would make the diff more readable, but I think the resulting code is simpler to read if all of the wildcard stuff is inside the "else" block. -Peff -- 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