sparse-index: recompute cache-tree

When some commands run with command_requires_full_index=1, then the index can get in a state where the in-memory cache tree is actually equal to the sparse index's cache tree instead of the full one. This results in incorrect entry_count values. By clearing the cache tree before converting to sparse, we avoid this issue. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Derrick Stolee committed Jun 29, 2021 at 02:13 UTC f934f1b47fb56d18b2b81d9288590e03e9a0ed23
1 file changed +2
sparse-index.c
+2
@@ -170,6 +170,8 @@ int convert_to_sparse(struct index_state *istate)
170 if (index_has_unmerged_entries(istate))
171 return 0;
172
173 + /* Clear and recompute the cache-tree */
174 + cache_tree_free(&istate->cache_tree);
175 if (cache_tree_update(istate, 0)) {
176 warning(_("unable to update cache-tree, staying full"));
177 return -1;