commit-graph: propagate topo_levels slab to all chain layers
The topo_levels slab is only propagated to the topmost graph layer instead of all layers in the chain. Commits from lower layers appear to have no generation numbers, so the DFS re-walks the entire ancestry. Fix by making topo_levels visible to all layers, not just the first one. Signed-off-by: Kristofer Karlsson <krka@spotify.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Kristofer Karlsson committed
Jul 9, 2026 at 15:03 UTC
8ea36f63d8e63350325705afef885ae215e64217
2 files changed
+2
-2
commit-graph.c
+1
-1
@@ -2610,7 +2610,7 @@ int write_commit_graph(struct odb_source *source,
2610
2611
g = prepare_commit_graph(ctx.r);
2612
for (struct commit_graph *chain = g; chain; chain = chain->base_graph)
2613
- g->topo_levels = &topo_levels;
2613
+ chain->topo_levels = &topo_levels;
2614
2615
if (flags & COMMIT_GRAPH_WRITE_BLOOM_FILTERS)
2616
ctx.changed_paths = 1;
t/t5324-split-commit-graph.sh
+1
-1
@@ -718,7 +718,7 @@ test_expect_success 'write generation data chunk when commit-graph chain is repl
718
)
719
'
720
721
-test_expect_failure 'incremental write reads topo levels from all layers' '
721
+test_expect_success 'incremental write reads topo levels from all layers' '
722
git init topo-from-lower &&
723
(
724
cd topo-from-lower &&