Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerrick Stolee <dstolee@microsoft.com>2021-06-29 05:13:05 +0300
committerJunio C Hamano <gitster@pobox.com>2021-07-15 01:05:53 +0300
commitf934f1b47fb56d18b2b81d9288590e03e9a0ed23 (patch)
tree68edab13b65236d75b315b29165521b6363e3c17 /sparse-index.c
parentdaa1acefc55bb6492c00519634e0a7622b3b6d69 (diff)
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>
Diffstat (limited to 'sparse-index.c')
-rw-r--r--sparse-index.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sparse-index.c b/sparse-index.c
index 53c8f711cc..c6b4feec41 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;