diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-02-13 13:37:53 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-02-13 13:37:53 -0800 |
commit | b4e931d84eddaab144643831d9508ea12d9cf38e (patch) | |
tree | a20d81b50c24cf2a5fa10d30e6046e8c360ed84c | |
parent | Git 1.8.5.4 (diff) | |
parent | tree_entry_interesting: match against all pathspecs (diff) | |
download | tgif-b4e931d84eddaab144643831d9508ea12d9cf38e.tar.xz |
Merge branch 'as/tree-walk-fix-aggressive-short-cut' into maint
The pathspec matching code, while comparing two trees (e.g. "git
diff A B -- path1 path2") was too aggressive and failed to match
some paths when multiple pathspecs were involved.
* as/tree-walk-fix-aggressive-short-cut:
tree_entry_interesting: match against all pathspecs
-rwxr-xr-x | t/t4010-diff-pathspec.sh | 13 | ||||
-rw-r--r-- | tree-walk.c | 2 |
2 files changed, 14 insertions, 1 deletions
diff --git a/t/t4010-diff-pathspec.sh b/t/t4010-diff-pathspec.sh index af5134b70c..589bc6bfb4 100755 --- a/t/t4010-diff-pathspec.sh +++ b/t/t4010-diff-pathspec.sh @@ -110,4 +110,17 @@ test_expect_success 'diff-tree -r with wildcard' ' test_cmp expected result ' +test_expect_success 'diff multiple wildcard pathspecs' ' + mkdir path2 && + echo rezrov >path2/file1 && + git update-index --add path2/file1 && + tree3=`git write-tree` && + git diff --name-only $tree $tree3 -- "path2*1" "path1*1" >actual && + cat <<-\EOF >expect && + path1/file1 + path2/file1 + EOF + test_cmp expect actual +' + test_done diff --git a/tree-walk.c b/tree-walk.c index 5ece8c3477..e06f240c75 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -743,7 +743,7 @@ match_wildcards: if (item->nowildcard_len && !match_wildcard_base(item, base_str, baselen, &matched)) - return entry_not_interesting; + continue; /* * Concatenate base and entry->path into one and do |