Changes from previous version [1]
- fixes depth limit and overlapping pathspecs, by checking deepest
pathspecs first. struct pathspec is now sorted (raw[] untouched)
- match_pathspec_depth depends on new match_pathspec_item() (a
clone of match_one(), but takes advantage of struct pathspec)
- ce_path_match uses struct pathspec
- strbuf is used instead of fixed length "base" buffer. This
introduces the weird strbuf_offset() function.
- never_interesting is disabled if any wildcards is present
- struct pathspec * == NULL is unacceptable, callers must pass
non-NULL.
- a bit more tests
[1] http://mid.gmane.org/1292233616-27692-1-git-send-email-pclouds@gmail.com
Jonathan Nieder (1):
glossary: define pathspec
Nguyễn Thái Ngọc Duy (20):
Add struct pathspec
diff-no-index: use diff_tree_setup_paths()
Convert struct diff_options to use struct pathspec
tree_entry_interesting(): remove dependency on struct diff_options
Move tree_entry_interesting() to tree-walk.c and export it
diff-tree: convert base+baselen to writable strbuf
tree_entry_interesting(): refactor into separate smaller functions
tree_entry_interesting(): support depth limit
tree_entry_interesting(): fix depth limit with overlapping pathspecs
tree_entry_interesting(): support wildcard matching
tree_entry_interesting(): optimize wildcard matching when base is matched
pathspec: add match_pathspec_depth()
Convert ce_path_match() to use struct pathspec
Convert ce_path_match() to use match_pathspec_depth()
grep: convert to use struct pathspec
grep: use match_pathspec_depth() for cache/worktree grepping
strbuf: allow "buf" to point to the middle of the allocated buffer
grep: use writable strbuf from caller for grep_tree()
grep: drop pathspec_matches() in favor of tree_entry_interesting()
t7810: overlapping pathspecs and depth limit
Documentation/glossary-content.txt | 23 +++
builtin/diff-files.c | 2 +-
builtin/diff.c | 4 +-
builtin/grep.c | 197 +++++++-------------------
builtin/log.c | 2 +-
builtin/update-index.c | 8 +-
cache.h | 17 ++-
diff-lib.c | 12 ++-
diff-no-index.c | 13 +-
diff.h | 4 +-
dir.c | 151 ++++++++++++++++++++
dir.h | 4 +
preload-index.c | 5 +-
read-cache.c | 25 +---
revision.c | 11 +-
strbuf.c | 36 ++++--
strbuf.h | 10 +-
t/t4010-diff-pathspec.sh | 32 ++++
t/t7810-grep.sh | 18 +++
tree-diff.c | 277 +++++++++---------------------------
tree-walk.c | 180 +++++++++++++++++++++++
tree-walk.h | 2 +
wt-status.c | 5 +-
23 files changed, 615 insertions(+), 423 deletions(-)