commit-graph.c: extract `verify_one_commit_graph()`

When the `verify_commit_graph()` function was extended to support commit-graph chains via 3da4b609bb1 (commit-graph: verify chains with --shallow mode, 2019-06-18), it did so by recursively calling itself on each layer of the commit-graph chain. In practice this poses no issues, since commit-graph chains do not loop, and there are few enough of them that adding additional frames to the stack is not a problem. A future commit will consolidate the progress output from `git commit-graph verify` when verifying chained commit-graphs to print a single line instead of one progress meter per commit-graph layer. Prepare for this by extracting a routine to verify a single layer of a commit-graph. Note that `verify_commit_graph()` is still recursive after this patch, but this will change in the subsequent patch. Signed-off-by: Taylor Blau <me@ttaylorr.com> Acked-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Taylor Blau committed Jul 7, 2023 at 20:31 UTC eb319d6771f5829dc26499af93050350083adc7d
1 file changed +16 -8
commit-graph.c
+16 -8
@@ -2543,18 +2543,14 @@ static int commit_graph_checksum_valid(struct commit_graph *g)
2543 return hashfile_checksum_valid(g->data, g->data_len);
2544 }
2545
2546 -int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags)
2546 +static int verify_one_commit_graph(struct repository *r,
2547 + struct commit_graph *g,
2548 + int flags)
2549 {
2550 uint32_t i, cur_fanout_pos = 0;
2551 struct object_id prev_oid, cur_oid;
2552 int generation_zero = 0;
2553 struct progress *progress = NULL;
2552 - int local_error = 0;
2553 -
2554 - if (!g) {
2555 - graph_report("no commit-graph file loaded");
2556 - return 1;
2557 - }
2554
2555 verify_commit_graph_error = verify_commit_graph_lite(g);
2556 if (verify_commit_graph_error)
@@ -2700,7 +2696,19 @@ int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags)
2696 }
2697 stop_progress(&progress);
2698
2703 - local_error = verify_commit_graph_error;
2699 + return verify_commit_graph_error;
2700 +}
2701 +
2702 +int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags)
2703 +{
2704 + int local_error = 0;
2705 +
2706 + if (!g) {
2707 + graph_report("no commit-graph file loaded");
2708 + return 1;
2709 + }
2710 +
2711 + local_error = verify_one_commit_graph(r, g, flags);
2712
2713 if (!(flags & COMMIT_GRAPH_VERIFY_SHALLOW) && g->base_graph)
2714 local_error |= verify_commit_graph(r, g->base_graph, flags);