sparse-index: update do_read_index to ensure correct sparsity
commit7ca4fc8819e60bbeb21a8684af182d321b338c47
authorVictoria Dye <vdye@github.com>
Tue, 23 Nov 2021 00:20:33 +0000 (23 00:20 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 25 Nov 2021 00:32:39 +0000 (24 16:32 -0800)
treee2b27792260228884edabebf1818828a6b6efc22
parentb93fea08d24b0ceb498445cc80c91e26a6bff29b
sparse-index: update do_read_index to ensure correct sparsity

Unless `command_requires_full_index` forces index expansion, ensure in-core
index sparsity matches config settings on read by calling
`ensure_correct_sparsity`. This makes the behavior of the in-core index more
consistent between different methods of updating sparsity: manually changing
the `index.sparse` config setting vs. executing
`git sparse-checkout --[no-]sparse-index init`

Although index sparsity is normally updated with `git sparse-checkout init`,
ensuring correct sparsity after a manual `index.sparse` change has some
practical benefits:

1. It allows for command-by-command sparsity toggling with
   `-c index.sparse=<true|false>`, e.g. when troubleshooting issues with the
   sparse index.
2. It prevents users from experiencing abnormal slowness after setting
   `index.sparse` to `true` due to use of a full index in all commands until
   the on-disk index is updated.

Helped-by: Junio C Hamano <gitster@pobox.com>
Co-authored-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Victoria Dye <vdye@github.com>
Reviewed-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
read-cache.c
t/t1092-sparse-checkout-compatibility.sh