[PATCH v2 4/7] sparse-index: recompute cache-tree
- From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jul 20, 2021, 20:14 UTC
- Message-ID
- <65e79b8037ca0268363db9ff967c1342a76485c5.1626812081.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.973.v2.git.1626812081.gitgitgadget@gmail.com>
From: Derrick Stolee <dstolee@microsoft.com>
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> --- sparse-index.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/sparse-index.c b/sparse-index.c index 53c8f711ccc..c6b4feec413 100644 --- a/sparse-index.c +++ b/sparse-index.c @@ -170,6 +170,8 @@ int convert_to_sparse(struct index_state *istate) if (index_has_unmerged_entries(istate)) return 0; + /* Clear and recompute the cache-tree */ + cache_tree_free(&istate->cache_tree); if (cache_tree_update(istate, 0)) { warning(_("unable to update cache-tree, staying full")); return -1;
-- gitgitgadget