Hi, this patch series is another step on our long road towards not having global state. In addition to that, as commit-graphs are part of the object database layer, this is also another step towards pluggable object databases. Changes in v2: - Use `unsigned` instead of `size_t` to count number of Bloom filters. - Use `uint32_t` instead of `size_t` for number of commit graphs, as this type is also used to iterate through this count already. - Refactor `parse_commit_graph()` to take a repository instead of both repo settings and a hash algo. - Link to v1: https://lore.kernel.org/r/20250804-b4-pks-commit-graph-wo-the-repository-v1-0-850d626eb2e8@xxxxxx Changes in v3: - Use `unsigned` for commit-graph options instead of `size_t`. - Link to v2: https://lore.kernel.org/r/20250806-b4-pks-commit-graph-wo-the-repository-v2-0-911bae638e61@xxxxxx Thanks! Patrick --- Patrick Steinhardt (10): trace2: introduce function to trace unsigned integers commit-graph: stop using signed integers to count Bloom filters commit-graph: fix type for some write options commit-graph: fix sign comparison warnings commit-graph: stop using `the_hash_algo` via macros commit-graph: store the hash algorithm instead of its length commit-graph: refactor `parse_commit_graph()` to take a repository commit-graph: stop using `the_hash_algo` commit-graph: stop using `the_repository` commit-graph: stop passing in redundant repository builtin/commit-graph.c | 13 +- builtin/commit.c | 2 +- builtin/merge.c | 2 +- commit-graph.c | 371 +++++++++++++++++++++---------------------- commit-graph.h | 25 ++- oss-fuzz/fuzz-commit-graph.c | 6 +- t/helper/test-read-graph.c | 2 +- trace2.c | 14 ++ trace2.h | 9 ++ 9 files changed, 227 insertions(+), 217 deletions(-) Range-diff versus v2: 1: 16f0fd6fb4 = 1: a652405a05 trace2: introduce function to trace unsigned integers 2: 53f12d827b = 2: 16a02e5dc0 commit-graph: stop using signed integers to count Bloom filters 3: f8d920e132 ! 3: 0cbd808dab commit-graph: fix type for some write options @@ commit-graph.c: static void split_graph_merge_strategy(struct write_commit_graph - - int max_commits = 0; - int size_mult = 2; -+ size_t max_commits = 0; -+ size_t size_mult = 2; ++ unsigned max_commits = 0; ++ unsigned size_mult = 2; if (ctx->opts) { max_commits = ctx->opts->max_commits; @@ commit-graph.h: enum commit_graph_split_flags { struct commit_graph_opts { - int size_multiple; - int max_commits; -+ size_t size_multiple; -+ size_t max_commits; ++ unsigned size_multiple; ++ unsigned max_commits; timestamp_t expire_time; enum commit_graph_split_flags split_flags; int max_new_filters; 4: 12d8d8f087 = 4: 8c1e6dc24c commit-graph: fix sign comparison warnings 5: c7fc957de1 = 5: 9b0c61d221 commit-graph: stop using `the_hash_algo` via macros 6: d41c5a419a = 6: 41e2e742ee commit-graph: store the hash algorithm instead of its length 7: fec6cf25c7 = 7: 06dc3545fe commit-graph: refactor `parse_commit_graph()` to take a repository 8: 6a3ba128c2 = 8: e06517c3a2 commit-graph: stop using `the_hash_algo` 9: c2e549b474 = 9: 0f10e272bb commit-graph: stop using `the_repository` 10: 59a325475d = 10: e00dc6651c commit-graph: stop passing in redundant repository --- base-commit: e813a0200a7121b97fec535f0d0b460b0a33356c change-id: 20250717-b4-pks-commit-graph-wo-the-repository-1dc2cacbc8e3