reset: integrate with sparse index
commitc01b1cbd473c05e29fe0c1a31b8f6539e82c4559
authorVictoria Dye <vdye@github.com>
Mon, 29 Nov 2021 15:52:40 +0000 (29 15:52 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Nov 2021 20:51:26 +0000 (29 12:51 -0800)
tree38bbe77ece24553f0a77d05401135a35ca77853e
parent291d77eb3e28aee42821d500bf61211f09b4297a
reset: integrate with sparse index

Disable `command_requires_full_index` repo setting and add
`ensure_full_index` guards around code paths that cannot yet use sparse
directory index entries. `reset --soft` does not modify the index, so no
compatibility changes are needed for it to function without expanding the
index. For all other reset modes (`--mixed`, `--hard`, `--keep`, `--merge`),
the full index is expanded to prevent cache tree corruption and invalid
variable accesses.

Additionally, the `read_cache()` check verifying an uncorrupted index is
moved after argument parsing and preparing the repo settings. The index is
not used by the preceding argument handling, but `read_cache()` must be run
*after* enabling sparse index for the command (so that the index is not
expanded unnecessarily) and *before* using the index for reset (so that it
is verified as uncorrupted).

Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/reset.c
cache-tree.c