Merge branch 'kl/cat-file-on-sparse-index'

"git cat-file" works well with the sparse-index, and gets marked as
such.

* kl/cat-file-on-sparse-index:
  builtin/cat-file: mark 'git cat-file' sparse-index compatible
  t1092: allow run_on_* functions to use standard input
This commit is contained in:
Junio C Hamano
2024-09-12 11:47:23 -07:00
2 changed files with 48 additions and 5 deletions

View File

@ -179,22 +179,26 @@ init_repos_as_submodules () {
}
run_on_sparse () {
cat >run-on-sparse-input &&
(
cd sparse-checkout &&
GIT_PROGRESS_DELAY=100000 "$@" >../sparse-checkout-out 2>../sparse-checkout-err
) &&
) <run-on-sparse-input &&
(
cd sparse-index &&
GIT_PROGRESS_DELAY=100000 "$@" >../sparse-index-out 2>../sparse-index-err
)
) <run-on-sparse-input
}
run_on_all () {
cat >run-on-all-input &&
(
cd full-checkout &&
GIT_PROGRESS_DELAY=100000 "$@" >../full-checkout-out 2>../full-checkout-err
) &&
run_on_sparse "$@"
) <run-on-all-input &&
run_on_sparse "$@" <run-on-all-input
}
test_all_match () {
@ -221,7 +225,7 @@ test_sparse_unstaged () {
done
}
# Usage: test_sprase_checkout_set "<c1> ... <cN>" "<s1> ... <sM>"
# Usage: test_sparse_checkout_set "<c1> ... <cN>" "<s1> ... <sM>"
# Verifies that "git sparse-checkout set <c1> ... <cN>" succeeds and
# leaves the sparse index in a state where <s1> ... <sM> are sparse
# directories (and <c1> ... <cN> are not).
@ -2354,4 +2358,40 @@ test_expect_success 'advice.sparseIndexExpanded' '
grep "The sparse index is expanding to a full index" err
'
test_expect_success 'cat-file -p' '
init_repos &&
echo "new content" >>full-checkout/deep/a &&
echo "new content" >>sparse-checkout/deep/a &&
echo "new content" >>sparse-index/deep/a &&
run_on_all git add deep/a &&
test_all_match git cat-file -p :deep/a &&
ensure_not_expanded cat-file -p :deep/a &&
test_all_match git cat-file -p :folder1/a &&
ensure_expanded cat-file -p :folder1/a
'
test_expect_success 'cat-file --batch' '
init_repos &&
echo "new content" >>full-checkout/deep/a &&
echo "new content" >>sparse-checkout/deep/a &&
echo "new content" >>sparse-index/deep/a &&
run_on_all git add deep/a &&
echo ":deep/a" >in &&
test_all_match git cat-file --batch <in &&
ensure_not_expanded cat-file --batch <in &&
echo ":folder1/a" >in &&
test_all_match git cat-file --batch <in &&
ensure_expanded cat-file --batch <in &&
cat >in <<-\EOF &&
:deep/a
:folder1/a
EOF
test_all_match git cat-file --batch <in &&
ensure_expanded cat-file --batch <in
'
test_done