tree_entry_interesting: match against all pathspecs
The current basedir compare aborts early in order to avoid futile recursive searches. However, a match may still be found by another pathspec. This can cause an error while checking out files from a branch when using multiple pathspecs: $ git checkout master -- 'a/*.txt' 'b/*.txt' error: pathspec 'a/*.txt' did not match any file(s) known to git. Signed-off-by: Andy Spencer <andy753421@gmail.com> Acked-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
2f93541d88
commit
e4ddb05720
@ -110,4 +110,17 @@ test_expect_success 'diff-tree -r with wildcard' '
|
|||||||
test_cmp expected result
|
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
|
test_done
|
||||||
|
@ -696,7 +696,7 @@ match_wildcards:
|
|||||||
|
|
||||||
if (item->nowildcard_len &&
|
if (item->nowildcard_len &&
|
||||||
!match_wildcard_base(item, base_str, baselen, &matched))
|
!match_wildcard_base(item, base_str, baselen, &matched))
|
||||||
return entry_not_interesting;
|
continue;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Concatenate base and entry->path into one and do
|
* Concatenate base and entry->path into one and do
|
||||||
|
Loading…
Reference in New Issue
Block a user