dir: exit before wildcard fall-through if there is no wildcard

The DO_MATCH_LEADING_PATHSPEC had a fall-through case for if there was a
wildcard, noting that we don't yet have enough information to determine
if a further paths under the current directory might match due to the
presence of wildcards.  But if we have no wildcards in our pathspec,
then we shouldn't get to that fall-through case.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Elijah Newren 2019-12-10 20:00:23 +00:00 коммит произвёл Junio C Hamano
Родитель 2f5d3847d4
Коммит 072a231016
2 изменённых файлов: 9 добавлений и 2 удалений

7
dir.c
Просмотреть файл

@ -379,6 +379,13 @@ static int match_pathspec_item(const struct index_state *istate,
item->nowildcard_len - prefix))
return 0;
/*
* name has no wildcard, and it didn't match as a leading
* pathspec so return.
*/
if (item->nowildcard_len == item->len)
return 0;
/*
* Here is where we would perform a wildmatch to check if
* "name" can be matched as a directory (or a prefix) against

Просмотреть файл

@ -92,7 +92,7 @@ test_expect_failure 'git ls-files -o untracked_repo/ does not recurse' '
test_cmp expect actual
'
test_expect_failure 'git ls-files -o untracked_dir untracked_repo recurses into untracked_dir only' '
test_expect_success 'git ls-files -o untracked_dir untracked_repo recurses into untracked_dir only' '
cat <<-EOF >expect &&
untracked_dir/empty
untracked_repo/
@ -110,7 +110,7 @@ test_expect_success 'git ls-files -o untracked_dir/ untracked_repo/ recurses int
test_cmp expect actual
'
test_expect_failure 'git ls-files -o --directory untracked_dir untracked_repo does not recurse' '
test_expect_success 'git ls-files -o --directory untracked_dir untracked_repo does not recurse' '
cat <<-EOF >expect &&
untracked_dir/
untracked_repo/