Merge branch 'ws/single-file-cone'
The logic to see if we are using the "cone" mode by checking the sparsity patterns has been tightened to avoid mistaking a pattern that names a single file as specifying a cone. * ws/single-file-cone: dir: check for single file cone patterns
This commit is contained in:
commit
ab85a7de6d
7
dir.c
7
dir.c
@ -732,6 +732,13 @@ static void add_pattern_to_hashsets(struct pattern_list *pl, struct path_pattern
|
|||||||
goto clear_hashmaps;
|
goto clear_hashmaps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(given->flags & PATTERN_FLAG_MUSTBEDIR) &&
|
||||||
|
strcmp(given->pattern, "/*")) {
|
||||||
|
/* Not a cone pattern. */
|
||||||
|
warning(_("unrecognized pattern: '%s'"), given->pattern);
|
||||||
|
goto clear_hashmaps;
|
||||||
|
}
|
||||||
|
|
||||||
prev = given->pattern;
|
prev = given->pattern;
|
||||||
cur = given->pattern + 1;
|
cur = given->pattern + 1;
|
||||||
next = given->pattern + 2;
|
next = given->pattern + 2;
|
||||||
|
@ -238,7 +238,7 @@ test_expect_success 'cone mode: match patterns' '
|
|||||||
test_expect_success 'cone mode: warn on bad pattern' '
|
test_expect_success 'cone mode: warn on bad pattern' '
|
||||||
test_when_finished mv sparse-checkout repo/.git/info/ &&
|
test_when_finished mv sparse-checkout repo/.git/info/ &&
|
||||||
cp repo/.git/info/sparse-checkout . &&
|
cp repo/.git/info/sparse-checkout . &&
|
||||||
echo "!/deep/deeper/*" >>repo/.git/info/sparse-checkout &&
|
echo "!/deep/deeper/*/" >>repo/.git/info/sparse-checkout &&
|
||||||
git -C repo read-tree -mu HEAD 2>err &&
|
git -C repo read-tree -mu HEAD 2>err &&
|
||||||
test_i18ngrep "unrecognized negative pattern" err
|
test_i18ngrep "unrecognized negative pattern" err
|
||||||
'
|
'
|
||||||
@ -667,6 +667,15 @@ test_expect_success 'pattern-checks: starting "*"' '
|
|||||||
check_read_tree_errors repo "a deep" "disabling cone pattern matching"
|
check_read_tree_errors repo "a deep" "disabling cone pattern matching"
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'pattern-checks: non directory pattern' '
|
||||||
|
cat >repo/.git/info/sparse-checkout <<-\EOF &&
|
||||||
|
/deep/deeper1/a
|
||||||
|
EOF
|
||||||
|
check_read_tree_errors repo deep "disabling cone pattern matching" &&
|
||||||
|
check_files repo/deep deeper1 &&
|
||||||
|
check_files repo/deep/deeper1 a
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'pattern-checks: contained glob characters' '
|
test_expect_success 'pattern-checks: contained glob characters' '
|
||||||
for c in "[a]" "\\" "?" "*"
|
for c in "[a]" "\\" "?" "*"
|
||||||
do
|
do
|
||||||
|
Loading…
Reference in New Issue
Block a user