On 8/17/2021 1:49 PM, SZEDER Gábor wrote: > The sparse index and split index features are said to be currently > incompatible [1], and consequently GIT_TEST_SPLIT_INDEX=1 might > interfere with the test cases exercising the sparse index feature. > Therefore GIT_TEST_SPLIT_INDEX is already explicitly disabled for the > whole of 't1092-sparse-checkout-compatibility.sh'. There are, > however, two other test cases exercising sparse index, namely > 'sparse-index enabled and disabled' in > 't1091-sparse-checkout-builtin.sh' and 'status succeeds with sparse > index' in 't7519-status-fsmonitor.sh', and these two could fail with > GIT_TEST_SPLIT_INDEX=1 as well [2]. > > Unset GIT_TEST_SPLIT_INDEX and disable the split index in these two > test cases to avoid such interference. > > Note that this is the minimal change to merely avoid failures when > these test cases are run with GIT_TEST_SPLIT_INDEX=1. Interestingly, > though, without these changes the 'git sparse-checkout init --cone > --sparse-index' commands still succeed even with split index, and set > all the necessary configuration variables and create the initial > '$GIT_DIR/info/sparse-checkout' file, but the test failures are caused > by later sanity checks finding that the index is not in fact a sparse > index. This indicates that 'git sparse-checkout init --sparse-index' > lacks some error checking and its tests lack coverage related to split > index, but fixing those issues (let alone making sparse index > comparible with split index) is beyond the scope of this patch series. s/comparible/compatible. I agree that making these two things compatible is not something to solve today. I'm not sure they should _ever_ be solved because of the complexity involved (what if the base index is not sparse but the tip wants to be, or vice-versa?, or if a directory must be expanded because of a conflict?). They use very different approaches to solve a similar problem: how to deal with large index files. * The split index reduces index _write_ time by only editing a diff of the base index. * The sparse index reduces index _read and write_ time by writing a smaller index, but only if the user is using cone mode sparse- checkout. > test_expect_success 'sparse-index enabled and disabled' ' > - git -C repo sparse-checkout init --cone --sparse-index && > - test_cmp_config -C repo true index.sparse && > - test-tool -C repo read-cache --table >cache && > - grep " tree " cache && > - > - git -C repo sparse-checkout disable && > - test-tool -C repo read-cache --table >cache && > - ! grep " tree " cache && > - git -C repo config --list >config && > - ! grep index.sparse config > + ( > + sane_unset GIT_TEST_SPLIT_INDEX && > + git -C repo update-index --no-split-index && > + > + git -C repo sparse-checkout init --cone --sparse-index && > + test_cmp_config -C repo true index.sparse && > + test-tool -C repo read-cache --table >cache && > + grep " tree " cache && > + > + git -C repo sparse-checkout disable && > + test-tool -C repo read-cache --table >cache && > + ! grep " tree " cache && > + git -C repo config --list >config && > + ! grep index.sparse config > + ) > ' This test is safe for now. > test_expect_success 'status succeeds with sparse index' ' This test is being edited in ds/sparse-index-ignored-files. v3 of the relevant patch was just sent today [1]. [1] https://lore.kernel.org/git/e66106f7a99d94145eec983ea5e72b7cf8a8a479.1629206603.git.gitgitgadget@xxxxxxxxx/ You might want to rebase on top of that topic. The edits to the test are likely stable now. Thanks, -Stolee