Skip to content

Commit

Permalink
Merge branch 'ws/single-file-cone' into jch
Browse files Browse the repository at this point in the history
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
  • Loading branch information
gitster committed Jan 15, 2023
2 parents 7d20be7 + 5842710 commit 72ed483
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
7 changes: 7 additions & 0 deletions dir.c
Expand Up @@ -732,6 +732,13 @@ static void add_pattern_to_hashsets(struct pattern_list *pl, struct path_pattern
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;
cur = given->pattern + 1;
next = given->pattern + 2;
Expand Down
11 changes: 10 additions & 1 deletion t/t1091-sparse-checkout-builtin.sh
Expand Up @@ -238,7 +238,7 @@ test_expect_success 'cone mode: match patterns' '
test_expect_success 'cone mode: warn on bad pattern' '
test_when_finished mv sparse-checkout repo/.git/info/ &&
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 &&
test_i18ngrep "unrecognized negative pattern" err
'
Expand Down Expand Up @@ -667,6 +667,15 @@ test_expect_success 'pattern-checks: starting "*"' '
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' '
for c in "[a]" "\\" "?" "*"
do
Expand Down

0 comments on commit 72ed483

Please sign in to comment.