[PATCH v2 02/12] commit-graph: verify file header information
- From
Derrick Stolee <dstolee@microsoft.com>
- Date
- May 11, 2018, 21:15 UTC
- Message-ID
- <20180511211504.79877-3-dstolee@microsoft.com>
- In-Reply-To
- <20180511211504.79877-1-dstolee@microsoft.com>
During a run of 'git commit-graph verify', list the issues with the header information in the commit-graph file. Some of this information is inferred from the loaded 'struct commit_graph'. Some header information is checked as part of load_commit_graph_one().
Signed-off-by: Derrick Stolee <dstolee@microsoft.com> --- commit-graph.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-)
diff --git a/commit-graph.c b/commit-graph.c index b25aaed128..d2db20e49a 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -818,7 +818,37 @@ void write_commit_graph(const char *obj_dir, oids.nr = 0; } +static int verify_commit_graph_error; + +static void graph_report(const char *fmt, ...) +{ + va_list ap; + struct strbuf sb = STRBUF_INIT; + verify_commit_graph_error = 1; + + va_start(ap, fmt); + strbuf_vaddf(&sb, fmt, ap); + + fprintf(stderr, "%s\n", sb.buf); + strbuf_release(&sb); + va_end(ap); +} + int verify_commit_graph(struct commit_graph *g) { - return !g; + if (!g) { + graph_report("no commit-graph file loaded"); + return 1; + } + + verify_commit_graph_error = 0; + + if (!g->chunk_oid_fanout) + graph_report("commit-graph is missing the OID Fanout chunk"); + if (!g->chunk_oid_lookup) + graph_report("commit-graph is missing the OID Lookup chunk"); + if (!g->chunk_commit_data) + graph_report("commit-graph is missing the Commit Data chunk"); + + return verify_commit_graph_error; }
-- 2.16.2.329.gfb62395de6