]> git.ipfire.org Git - thirdparty/git.git/commitdiff
commit-graph.c: extract `verify_one_commit_graph()`
authorTaylor Blau <me@ttaylorr.com>
Sat, 8 Jul 2023 00:31:36 +0000 (20:31 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 10 Jul 2023 17:02:41 +0000 (10:02 -0700)
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>
commit-graph.c

index 843bdb458d02fbd2aa4721047aa376a1fe25891f..e84692093537f1a7c9e7305eb7c62e914f2c0add 100644 (file)
@@ -2543,18 +2543,14 @@ static int commit_graph_checksum_valid(struct commit_graph *g)
        return hashfile_checksum_valid(g->data, g->data_len);
 }
 
-int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags)
+static int verify_one_commit_graph(struct repository *r,
+                                  struct commit_graph *g,
+                                  int flags)
 {
        uint32_t i, cur_fanout_pos = 0;
        struct object_id prev_oid, cur_oid;
        int generation_zero = 0;
        struct progress *progress = NULL;
-       int local_error = 0;
-
-       if (!g) {
-               graph_report("no commit-graph file loaded");
-               return 1;
-       }
 
        verify_commit_graph_error = verify_commit_graph_lite(g);
        if (verify_commit_graph_error)
@@ -2700,7 +2696,19 @@ int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags)
        }
        stop_progress(&progress);
 
-       local_error = verify_commit_graph_error;
+       return verify_commit_graph_error;
+}
+
+int verify_commit_graph(struct repository *r, struct commit_graph *g, int flags)
+{
+       int local_error = 0;
+
+       if (!g) {
+               graph_report("no commit-graph file loaded");
+               return 1;
+       }
+
+       local_error = verify_one_commit_graph(r, g, flags);
 
        if (!(flags & COMMIT_GRAPH_VERIFY_SHALLOW) && g->base_graph)
                local_error |= verify_commit_graph(r, g->base_graph, flags);