Junio C Hamano <gitster@xxxxxxxxx> writes: > Clemens Buchacher <drizzd@xxxxxx> writes: > >> With this patch ce_path_match uses match_pathspec in order to perform >> pattern matching. > > We have two conflicting definitions of pattern matching in our system. > I'd make it more explicit which kind of pattern matching you are talking > about here. > > The family of operations based on the diff-tree machinery (e.g. path > limited revision walking "git log A..B -- dir1/dir2") define the pattern > matching as "leading path match (exact match is just a special case of > this)". Other operations that work on paths in the work tree and the > index (e.g. grep, ls-files) uses "leading path match, but fall back to > globbing". > > In the longer term we really should unify them by teaching the former to > fall back to globbing without getting undue performance hit, and this > patch may be a step in the right direction. There are optimizations that > assume the "leading path" semantics to trim the input early and avoid > opening and descending into a tree object if pathspec patterns cannot > possibly match (see tree-diff.c::tree_entry_interesting() for an example), > and we need to teach them to notice a glob wildcard in an earlier part of > a pathspec and to descend into some trees that they would have skipped > with the old definition of pathspec. Actually there was an earlier attempt that resulted in the pathspec matching tree traverser builtin-grep uses. Even though it has to work with trees (when grepping inside a tree-ish) and has optimizations not to open unnecessary subtrees similar to the one the diff-tree machinery has, it also knows how to handle globs. If we were to pick one of existing implementations for the longer term unification, I think that is probably the one we should build on top of. -- 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