Re: [PATCH v2 05/11] commit-graph: unify the signatures of all write_graph_chunk_*() functions
Am 23.06.20 um 19:47 schrieb SZEDER Gábor via GitGitGadget:
Show 57 quoted lines
> From: =?UTF-8?q?SZEDER=20G=C3=A1bor?= <szeder.dev@gmail.com>
>
> Update the write_graph_chunk_*() helper functions to have the same
> signature:
>
> - Return an int error code from all these functions.
> write_graph_chunk_base() already has an int error code, now the
> others will have one, too, but since they don't indicate any
> error, they will always return 0.
>
> - Drop the hash size parameter of write_graph_chunk_oids() and
> write_graph_chunk_data(); its value can be read directly from
> 'the_hash_algo' inside these functions as well.
>
> This opens up the possibility for further cleanups and foolproofing in
> the following two patches.
>
> Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
> Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
> ---
> commit-graph.c | 42 ++++++++++++++++++++++++++----------------
> 1 file changed, 26 insertions(+), 16 deletions(-)
>
> diff --git a/commit-graph.c b/commit-graph.c
> index 908f094271..f33bfe49b3 100644
> --- a/commit-graph.c
> +++ b/commit-graph.c
> @@ -891,8 +891,8 @@ struct write_commit_graph_context {
> const struct bloom_filter_settings *bloom_settings;
> };
>
> -static void write_graph_chunk_fanout(struct hashfile *f,
> - struct write_commit_graph_context *ctx)
> +static int write_graph_chunk_fanout(struct hashfile *f,
> + struct write_commit_graph_context *ctx)
> {
> int i, count = 0;
> struct commit **list = ctx->commits.list;
> @@ -913,17 +913,21 @@ static void write_graph_chunk_fanout(struct hashfile *f,
>
> hashwrite_be32(f, count);
> }
> +
> + return 0;
> }
>
> -static void write_graph_chunk_oids(struct hashfile *f, int hash_len,
> - struct write_commit_graph_context *ctx)
> +static int write_graph_chunk_oids(struct hashfile *f,
> + struct write_commit_graph_context *ctx)
> {
> struct commit **list = ctx->commits.list;
> int count;
> for (count = 0; count < ctx->commits.nr; count++, list++) {
> display_progress(ctx->progress, ++ctx->progress_cnt);
> - hashwrite(f, (*list)->object.oid.hash, (int)hash_len);
> + hashwrite(f, (*list)->object.oid.hash, (int)the_hash_algo->rawsz); ^^^^^
This cast is confusing...
Show 23 quoted lines
> }
> +
> + return 0;
> }
>
> static const unsigned char *commit_to_sha1(size_t index, void *table)
> @@ -932,8 +936,8 @@ static const unsigned char *commit_to_sha1(size_t index, void *table)
> return commits[index]->object.oid.hash;
> }
>
> -static void write_graph_chunk_data(struct hashfile *f, int hash_len,
> - struct write_commit_graph_context *ctx)
> +static int write_graph_chunk_data(struct hashfile *f,
> + struct write_commit_graph_context *ctx)
> {
> struct commit **list = ctx->commits.list;
> struct commit **last = ctx->commits.list + ctx->commits.nr;
> @@ -950,7 +954,7 @@ static void write_graph_chunk_data(struct hashfile *f, int hash_len,
> die(_("unable to parse commit %s"),
> oid_to_hex(&(*list)->object.oid));
> tree = get_commit_tree_oid(*list);
> - hashwrite(f, tree->hash, hash_len);
> + hashwrite(f, tree->hash, the_hash_algo->rawsz);... and obviously not needed, as this example shows.
Show 72 quoted lines
>
> parent = (*list)->parents;
>
> @@ -1030,10 +1034,12 @@ static void write_graph_chunk_data(struct hashfile *f, int hash_len,
>
> list++;
> }
> +
> + return 0;
> }
>
> -static void write_graph_chunk_extra_edges(struct hashfile *f,
> - struct write_commit_graph_context *ctx)
> +static int write_graph_chunk_extra_edges(struct hashfile *f,
> + struct write_commit_graph_context *ctx)
> {
> struct commit **list = ctx->commits.list;
> struct commit **last = ctx->commits.list + ctx->commits.nr;
> @@ -1082,10 +1088,12 @@ static void write_graph_chunk_extra_edges(struct hashfile *f,
>
> list++;
> }
> +
> + return 0;
> }
>
> -static void write_graph_chunk_bloom_indexes(struct hashfile *f,
> - struct write_commit_graph_context *ctx)
> +static int write_graph_chunk_bloom_indexes(struct hashfile *f,
> + struct write_commit_graph_context *ctx)
> {
> struct commit **list = ctx->commits.list;
> struct commit **last = ctx->commits.list + ctx->commits.nr;
> @@ -1107,6 +1115,7 @@ static void write_graph_chunk_bloom_indexes(struct hashfile *f,
> }
>
> stop_progress(&progress);
> + return 0;
> }
>
> static void trace2_bloom_filter_settings(struct write_commit_graph_context *ctx)
> @@ -1124,8 +1133,8 @@ static void trace2_bloom_filter_settings(struct write_commit_graph_context *ctx)
> jw_release(&jw);
> }
>
> -static void write_graph_chunk_bloom_data(struct hashfile *f,
> - struct write_commit_graph_context *ctx)
> +static int write_graph_chunk_bloom_data(struct hashfile *f,
> + struct write_commit_graph_context *ctx)
> {
> struct commit **list = ctx->commits.list;
> struct commit **last = ctx->commits.list + ctx->commits.nr;
> @@ -1151,6 +1160,7 @@ static void write_graph_chunk_bloom_data(struct hashfile *f,
> }
>
> stop_progress(&progress);
> + return 0;
> }
>
> static int oid_compare(const void *_a, const void *_b)
> @@ -1662,8 +1672,8 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx)
> num_chunks * ctx->commits.nr);
> }
> write_graph_chunk_fanout(f, ctx);
> - write_graph_chunk_oids(f, hashsz, ctx);
> - write_graph_chunk_data(f, hashsz, ctx);
> + write_graph_chunk_oids(f, ctx);
> + write_graph_chunk_data(f, ctx);
> if (ctx->num_extra_edges)
> write_graph_chunk_extra_edges(f, ctx);
> if (ctx->changed_paths) {
>