Am 15.06.20 um 22:14 schrieb Derrick Stolee via GitGitGadget: > From: Derrick Stolee <dstolee@xxxxxxxxxxxxx> > > Place an instance of struct bloom_settings into the struct > write_commit_graph_context. This allows simplifying the function > prototype of write_graph_chunk_bloom_data(). This will allow us > to combine the function prototypes and use function pointers to > simplify write_commit_graph_file(). > > Reported-by: SZEDER Gábor <szeder.dev@xxxxxxxxx> > Signed-off-by: Derrick Stolee <dstolee@xxxxxxxxxxxxx> > --- > commit-graph.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/commit-graph.c b/commit-graph.c > index 887837e8826..05b7035d8d5 100644 > --- a/commit-graph.c > +++ b/commit-graph.c > @@ -882,6 +882,7 @@ struct write_commit_graph_context { > > const struct split_commit_graph_opts *split_opts; > size_t total_bloom_filter_data_size; > + struct bloom_filter_settings bloom_settings; That structure is quite busy already, so adding one more member wouldn't matter much. Passing so many things to lots of functions makes it harder to argue about them, though, as all of them effectively become part of their signature, and you have to look at their implementation to see which pseudo-parameters they actually use. It's like a God object. > }; > > static void write_graph_chunk_fanout(struct hashfile *f, > @@ -1103,8 +1104,7 @@ static void write_graph_chunk_bloom_indexes(struct hashfile *f, > } > > static void write_graph_chunk_bloom_data(struct hashfile *f, > - struct write_commit_graph_context *ctx, > - const struct bloom_filter_settings *settings) > + struct write_commit_graph_context *ctx) > { > struct commit **list = ctx->commits.list; > struct commit **last = ctx->commits.list + ctx->commits.nr; > @@ -1116,9 +1116,9 @@ static void write_graph_chunk_bloom_data(struct hashfile *f, > _("Writing changed paths Bloom filters data"), > ctx->commits.nr); > > - hashwrite_be32(f, settings->hash_version); > - hashwrite_be32(f, settings->num_hashes); > - hashwrite_be32(f, settings->bits_per_entry); > + hashwrite_be32(f, ctx->bloom_settings.hash_version); > + hashwrite_be32(f, ctx->bloom_settings.num_hashes); > + hashwrite_be32(f, ctx->bloom_settings.bits_per_entry); > > while (list < last) { > struct bloom_filter *filter = get_bloom_filter(ctx->r, *list, 0); > @@ -1541,6 +1541,8 @@ static int write_commit_graph_file(struct write_commit_graph_context *ctx) > struct object_id file_hash; > const struct bloom_filter_settings bloom_settings = DEFAULT_BLOOM_FILTER_SETTINGS; > > + ctx->bloom_settings = bloom_settings; So we use the defaults, no customization? Then you could simply move the declaration of bloom_settings from write_commit_graph_file() to write_graph_chunk_bloom_data(). Glancing at pu I don't see additional uses there, so no need to put it into the context (yet?). René