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:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2023-03-27 01:45:43 +0300
committerJunio C Hamano <gitster@pobox.com>2023-03-27 19:40:40 +0300
commit061dd722dcc7a0e1f506c426ff6591b0ca8f14b6 (patch)
treebecf0f0d93c181d9406440813bf3e3d4268a726a /unpack-trees.c
parentbe6b65b91bb48c9399c8a6a358dd29b198f2bd79 (diff)
unpack-trees: take care to propagate the split-index flag
When copying the `split_index` structure from one index structure to another, we need to propagate the `SPLIT_INDEX_ORDERED` flag, too, if it is set, otherwise Git might forget to write the shared index when that is actually needed. It just so _happens_ that in many instances when `unpack_trees()` is called, the result causes the shared index to be written anyway, but there are edge cases when that is not so. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'unpack-trees.c')
-rw-r--r--unpack-trees.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/unpack-trees.c b/unpack-trees.c
index 90b92114be..ca5e47c77c 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -1916,6 +1916,8 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
* create a new one.
*/
o->result.split_index = o->src_index->split_index;
+ if (o->src_index->cache_changed & SPLIT_INDEX_ORDERED)
+ o->result.cache_changed |= SPLIT_INDEX_ORDERED;
o->result.split_index->refcount++;
} else {
o->result.split_index = init_split_index(&o->result);