From: Derrick Stolee <dstolee@xxxxxxxxxxxxx> Since we already do not collapse a sparse directory if it contains a submodule, we don't need to expand to a full index in die_path_inside_submodule(). A simple scan of the index entries is sufficient. Signed-off-by: Derrick Stolee <dstolee@xxxxxxxxxxxxx> --- submodule.c | 2 -- t/t1092-sparse-checkout-compatibility.sh | 24 +++++++++++------------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/submodule.c b/submodule.c index f80cfddbd52..487d083e4ef 100644 --- a/submodule.c +++ b/submodule.c @@ -346,8 +346,6 @@ void die_path_inside_submodule(struct index_state *istate, { int i, j; - ensure_full_index(istate); - for (i = 0; i < istate->cache_nr; i++) { struct cache_entry *ce = istate->cache[i]; int ce_len = ce_namelen(ce); diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh index ae594ab880c..2e8efe6ab37 100755 --- a/t/t1092-sparse-checkout-compatibility.sh +++ b/t/t1092-sparse-checkout-compatibility.sh @@ -390,29 +390,27 @@ test_expect_success 'sparse-index is expanded and converted back' ' GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \ git -C sparse-index -c core.fsmonitor="" reset --hard && test_region index convert_to_sparse trace2.txt && - test_region index ensure_full_index trace2.txt && + test_region index ensure_full_index trace2.txt +' + +test_expect_success 'sparse-index is not expanded' ' + init_repos && + + rm -f trace2.txt && + GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \ + git -C sparse-index -c core.fsmonitor="" status -uno && + test_region ! index ensure_full_index trace2.txt && rm trace2.txt && echo >>sparse-index/README.md && GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \ git -C sparse-index -c core.fsmonitor="" add -A && - test_region index convert_to_sparse trace2.txt && - test_region index ensure_full_index trace2.txt && + test_region ! index ensure_full_index trace2.txt && rm trace2.txt && echo >>sparse-index/extra.txt && GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \ git -C sparse-index -c core.fsmonitor="" add extra.txt && - test_region index convert_to_sparse trace2.txt && - test_region index ensure_full_index trace2.txt -' - -test_expect_success 'sparse-index is not expanded' ' - init_repos && - - rm -f trace2.txt && - GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \ - git -C sparse-index -c core.fsmonitor="" status -uno && test_region ! index ensure_full_index trace2.txt ' -- gitgitgadget