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:
@ -1047,6 +1047,9 @@ int cmd_cat_file(int argc, const char **argv, const char *prefix)
|
|||||||
if (batch.buffer_output < 0)
|
if (batch.buffer_output < 0)
|
||||||
batch.buffer_output = batch.all_objects;
|
batch.buffer_output = batch.all_objects;
|
||||||
|
|
||||||
|
prepare_repo_settings(the_repository);
|
||||||
|
the_repository->settings.command_requires_full_index = 0;
|
||||||
|
|
||||||
/* Return early if we're in batch mode? */
|
/* Return early if we're in batch mode? */
|
||||||
if (batch.enabled) {
|
if (batch.enabled) {
|
||||||
if (opt_cw)
|
if (opt_cw)
|
||||||
|
@ -179,22 +179,26 @@ init_repos_as_submodules () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
run_on_sparse () {
|
run_on_sparse () {
|
||||||
|
cat >run-on-sparse-input &&
|
||||||
|
|
||||||
(
|
(
|
||||||
cd sparse-checkout &&
|
cd sparse-checkout &&
|
||||||
GIT_PROGRESS_DELAY=100000 "$@" >../sparse-checkout-out 2>../sparse-checkout-err
|
GIT_PROGRESS_DELAY=100000 "$@" >../sparse-checkout-out 2>../sparse-checkout-err
|
||||||
) &&
|
) <run-on-sparse-input &&
|
||||||
(
|
(
|
||||||
cd sparse-index &&
|
cd sparse-index &&
|
||||||
GIT_PROGRESS_DELAY=100000 "$@" >../sparse-index-out 2>../sparse-index-err
|
GIT_PROGRESS_DELAY=100000 "$@" >../sparse-index-out 2>../sparse-index-err
|
||||||
)
|
) <run-on-sparse-input
|
||||||
}
|
}
|
||||||
|
|
||||||
run_on_all () {
|
run_on_all () {
|
||||||
|
cat >run-on-all-input &&
|
||||||
|
|
||||||
(
|
(
|
||||||
cd full-checkout &&
|
cd full-checkout &&
|
||||||
GIT_PROGRESS_DELAY=100000 "$@" >../full-checkout-out 2>../full-checkout-err
|
GIT_PROGRESS_DELAY=100000 "$@" >../full-checkout-out 2>../full-checkout-err
|
||||||
) &&
|
) <run-on-all-input &&
|
||||||
run_on_sparse "$@"
|
run_on_sparse "$@" <run-on-all-input
|
||||||
}
|
}
|
||||||
|
|
||||||
test_all_match () {
|
test_all_match () {
|
||||||
@ -221,7 +225,7 @@ test_sparse_unstaged () {
|
|||||||
done
|
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
|
# Verifies that "git sparse-checkout set <c1> ... <cN>" succeeds and
|
||||||
# leaves the sparse index in a state where <s1> ... <sM> are sparse
|
# leaves the sparse index in a state where <s1> ... <sM> are sparse
|
||||||
# directories (and <c1> ... <cN> are not).
|
# 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
|
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
|
test_done
|
||||||
|
Reference in New Issue
Block a user