[PATCH v3 00/10] commit-graph: remove reliance on global state
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Aug 7, 2025, 08:04 UTC
- Message-ID
- <20250807-b4-pks-commit-graph-wo-the-repository-v3-0-82edef830a1e@pks.im>
- In-Reply-To
- <20250804-b4-pks-commit-graph-wo-the-repository-v1-0-850d626eb2e8@pks.im>
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@pks.imChanges 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@pks.im
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 repositorybuiltin/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