summaryrefslogtreecommitdiff
path: root/t/t1092-sparse-checkout-compatibility.sh
diff options
context:
space:
mode:
authorDerrick Stolee <derrickstolee@github.com>2022-04-26 20:43:20 (GMT)
committerJunio C Hamano <gitster@pobox.com>2022-04-26 20:56:39 (GMT)
commit124b05b23005437fa5fb91863bde2a8f5840e164 (patch)
tree0cd13eaa15f19fe4d15297d9b26516edda3e4ed3 /t/t1092-sparse-checkout-compatibility.sh
parent4925adb4dac1f794cc5d5c82dee49e2f5f47560f (diff)
downloadgit-124b05b23005437fa5fb91863bde2a8f5840e164.zip
git-124b05b23005437fa5fb91863bde2a8f5840e164.tar.gz
git-124b05b23005437fa5fb91863bde2a8f5840e164.tar.bz2
rev-parse: integrate with sparse index
It is not obvious that the 'git rev-parse' builtin would use the sparse index, but it is possible to parse paths out of the index using the ":<path>" syntax. The 'git rev-parse' output is only the OID of the object found at that location, but otherwise behaves similarly to 'git show :<path>'. This includes the failure conditions on directories and the error messages depending on whether a path is in the worktree or not. The only code change required is to change the command_requires_full_index setting in builtin/rev-parse.c, and we can re-use many existing 'git show' tests for the rev-parse case. Signed-off-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t1092-sparse-checkout-compatibility.sh')
-rwxr-xr-xt/t1092-sparse-checkout-compatibility.sh45
1 files changed, 25 insertions, 20 deletions
diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh
index fa1d560..93bcfd2 100755
--- a/t/t1092-sparse-checkout-compatibility.sh
+++ b/t/t1092-sparse-checkout-compatibility.sh
@@ -1151,29 +1151,32 @@ test_expect_success 'clean' '
test_sparse_match test_path_is_dir folder1
'
-test_expect_success 'show (cached blobs/trees)' '
- init_repos &&
+for builtin in show rev-parse
+do
+ test_expect_success "$builtin (cached blobs/trees)" "
+ init_repos &&
- test_all_match git show :a &&
- test_all_match git show :deep/a &&
- test_sparse_match git show :folder1/a &&
+ test_all_match git $builtin :a &&
+ test_all_match git $builtin :deep/a &&
+ test_sparse_match git $builtin :folder1/a &&
- # The error message differs depending on whether
- # the directory exists in the worktree.
- test_all_match test_must_fail git show :deep/ &&
- test_must_fail git -C full-checkout show :folder1/ &&
- test_sparse_match test_must_fail git show :folder1/ &&
+ # The error message differs depending on whether
+ # the directory exists in the worktree.
+ test_all_match test_must_fail git $builtin :deep/ &&
+ test_must_fail git -C full-checkout $builtin :folder1/ &&
+ test_sparse_match test_must_fail git $builtin :folder1/ &&
- # Change the sparse cone for an extra case:
- run_on_sparse git sparse-checkout set deep/deeper1 &&
+ # Change the sparse cone for an extra case:
+ run_on_sparse git sparse-checkout set deep/deeper1 &&
- # deep/deeper2 is a sparse directory in the sparse index.
- test_sparse_match test_must_fail git show :deep/deeper2/ &&
+ # deep/deeper2 is a sparse directory in the sparse index.
+ test_sparse_match test_must_fail git $builtin :deep/deeper2/ &&
- # deep/deeper2/deepest is not in the sparse index, but
- # will trigger an index expansion.
- test_sparse_match test_must_fail git show :deep/deeper2/deepest/
-'
+ # deep/deeper2/deepest is not in the sparse index, but
+ # will trigger an index expansion.
+ test_sparse_match test_must_fail git $builtin :deep/deeper2/deepest/
+ "
+done
test_expect_success 'submodule handling' '
init_repos &&
@@ -1396,11 +1399,13 @@ test_expect_success 'sparse index is not expanded: diff' '
ensure_not_expanded diff --cached
'
-test_expect_success 'sparse index is not expanded: show' '
+test_expect_success 'sparse index is not expanded: show and rev-parse' '
init_repos &&
ensure_not_expanded show :a &&
- ensure_not_expanded show :deep/a
+ ensure_not_expanded show :deep/a &&
+ ensure_not_expanded rev-parse :a &&
+ ensure_not_expanded rev-parse :deep/a
'
test_expect_success 'sparse index is not expanded: update-index' '