Skip to content

Commit

Permalink
Merge branch 'as/tree-walk-fix-aggressive-short-cut' into maint
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Junio C Hamano committed Feb 13, 2014
2 parents 3330a2c + e4ddb05 commit b4e931d
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
13 changes: 13 additions & 0 deletions t/t4010-diff-pathspec.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion tree-walk.c
Original file line number Diff line number Diff line change
Expand Up @@ -743,7 +743,7 @@ enum interesting tree_entry_interesting(const struct name_entry *entry,

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
Expand Down

0 comments on commit b4e931d

Please sign in to comment.