git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 02/10] commit-graph: stop using signed integers to count Bloom filters

From
Patrick Steinhardt <ps@pks.im>
Date
Aug 6, 2025, 12:00 UTC
Message-ID
<20250806-b4-pks-commit-graph-wo-the-repository-v2-2-911bae638e61@pks.im>
In-Reply-To
<20250806-b4-pks-commit-graph-wo-the-repository-v2-0-911bae638e61@pks.im>

When writing a new commit graph we have a couple of counters that provide statistics around what kind of Bloom filters we have or have not written. These counters naturally count from zero and are only ever incremented, but they use a signed integer as type regardless.

Refactor those fields to be unsigned instead. Using an unsigned type makes it explicit to the reader that they never have to worry about negative values and thus makes the code easier to understand.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 commit-graph.c | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/commit-graph.c b/commit-graph.c
index bd7b6f5338..3fc1273ba5 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -1170,11 +1170,11 @@ struct write_commit_graph_context {
 	size_t total_bloom_filter_data_size;
 	const struct bloom_filter_settings *bloom_settings;
 
-	int count_bloom_filter_computed;
-	int count_bloom_filter_not_computed;
-	int count_bloom_filter_trunc_empty;
-	int count_bloom_filter_trunc_large;
-	int count_bloom_filter_upgraded;
+	unsigned count_bloom_filter_computed;
+	unsigned count_bloom_filter_not_computed;
+	unsigned count_bloom_filter_trunc_empty;
+	unsigned count_bloom_filter_trunc_large;
+	unsigned count_bloom_filter_upgraded;
 };
 
 static int write_graph_chunk_fanout(struct hashfile *f,
@@ -1779,16 +1779,16 @@ void ensure_generations_valid(struct repository *r,
 
 static void trace2_bloom_filter_write_statistics(struct write_commit_graph_context *ctx)
 {
-	trace2_data_intmax("commit-graph", ctx->r, "filter-computed",
-			   ctx->count_bloom_filter_computed);
-	trace2_data_intmax("commit-graph", ctx->r, "filter-not-computed",
-			   ctx->count_bloom_filter_not_computed);
-	trace2_data_intmax("commit-graph", ctx->r, "filter-trunc-empty",
-			   ctx->count_bloom_filter_trunc_empty);
-	trace2_data_intmax("commit-graph", ctx->r, "filter-trunc-large",
-			   ctx->count_bloom_filter_trunc_large);
-	trace2_data_intmax("commit-graph", ctx->r, "filter-upgraded",
-			   ctx->count_bloom_filter_upgraded);
+	trace2_data_uintmax("commit-graph", ctx->r, "filter-computed",
+			    ctx->count_bloom_filter_computed);
+	trace2_data_uintmax("commit-graph", ctx->r, "filter-not-computed",
+			    ctx->count_bloom_filter_not_computed);
+	trace2_data_uintmax("commit-graph", ctx->r, "filter-trunc-empty",
+			    ctx->count_bloom_filter_trunc_empty);
+	trace2_data_uintmax("commit-graph", ctx->r, "filter-trunc-large",
+			    ctx->count_bloom_filter_trunc_large);
+	trace2_data_uintmax("commit-graph", ctx->r, "filter-upgraded",
+			    ctx->count_bloom_filter_upgraded);
 }
 
 static void compute_bloom_filters(struct write_commit_graph_context *ctx)
-- 
2.51.0.rc0.215.g125493bb4a.dirty
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 37 of 69 in “commit-graph: remove reliance on global state”
  1. 0/9 commit-graph: remove reliance on global statePatrick Steinhardt, Aug 4, 2025
  2. 1/9 trace2: introduce function to trace unsigned integersPatrick Steinhardt, Aug 4, 2025
  3. Taylor BlauAug 4, 2025
  4. 2/9 commit-graph: stop using signed integers to count bloom filtersPatrick Steinhardt, Aug 4, 2025
  5. Oswald BuddenhagenAug 4, 2025
  6. Patrick SteinhardtAug 4, 2025
  7. Junio C HamanoAug 4, 2025
  8. Taylor BlauAug 4, 2025
  9. Patrick SteinhardtAug 6, 2025
  10. Oswald BuddenhagenAug 6, 2025
  11. Junio C HamanoAug 6, 2025
  12. Junio C HamanoAug 6, 2025
  13. Patrick SteinhardtAug 7, 2025
  14. Junio C HamanoAug 7, 2025
  15. Patrick SteinhardtAug 11, 2025
  16. Junio C HamanoAug 5, 2025
  17. Taylor BlauAug 4, 2025
  18. 3/9 commit-graph: fix type for some write optionsPatrick Steinhardt, Aug 4, 2025
  19. Taylor BlauAug 4, 2025
  20. 4/9 commit-graph: fix sign comparison warningsPatrick Steinhardt, Aug 4, 2025
  21. Taylor BlauAug 4, 2025
  22. Patrick SteinhardtAug 6, 2025
  23. 5/9 commit-graph: stop using `the_hash_algo` via macrosPatrick Steinhardt, Aug 4, 2025
  24. Taylor BlauAug 4, 2025
  25. 6/9 commit-graph: store the hash algorithm instead of its lengthPatrick Steinhardt, Aug 4, 2025
  26. Taylor BlauAug 4, 2025
  27. 7/9 commit-graph: stop using `the_hash_algo`Patrick Steinhardt, Aug 4, 2025
  28. Taylor BlauAug 4, 2025
  29. Patrick SteinhardtAug 6, 2025
  30. 8/9 commit-graph: stop using `the_repository`Patrick Steinhardt, Aug 4, 2025
  31. Taylor BlauAug 4, 2025
  32. 9/9 commit-graph: stop passing in redundant repositoryPatrick Steinhardt, Aug 4, 2025
  33. Derrick StoleeAug 5, 2025
  34. Patrick SteinhardtAug 6, 2025
  35. 00/10 commit-graph: remove reliance on global statePatrick Steinhardt, Aug 6, 2025
  36. 01/10 trace2: introduce function to trace unsigned integersPatrick Steinhardt, Aug 6, 2025
  37. 02/10 commit-graph: stop using signed integers to count Bloom filtersPatrick Steinhardt, Aug 6, 2025
  38. 03/10 commit-graph: fix type for some write optionsPatrick Steinhardt, Aug 6, 2025
  39. Oswald BuddenhagenAug 6, 2025
  40. Junio C HamanoAug 6, 2025
  41. Patrick SteinhardtAug 7, 2025
  42. 04/10 commit-graph: fix sign comparison warningsPatrick Steinhardt, Aug 6, 2025
  43. 05/10 commit-graph: stop using `the_hash_algo` via macrosPatrick Steinhardt, Aug 6, 2025
  44. 06/10 commit-graph: store the hash algorithm instead of its lengthPatrick Steinhardt, Aug 6, 2025
  45. 07/10 commit-graph: refactor `parse_commit_graph()` to take a repositoryPatrick Steinhardt, Aug 6, 2025
  46. 08/10 commit-graph: stop using `the_hash_algo`Patrick Steinhardt, Aug 6, 2025
  47. 09/10 commit-graph: stop using `the_repository`Patrick Steinhardt, Aug 6, 2025
  48. 10/10 commit-graph: stop passing in redundant repositoryPatrick Steinhardt, Aug 6, 2025
  49. 00/10 commit-graph: remove reliance on global statePatrick Steinhardt, Aug 7, 2025
  50. 01/10 trace2: introduce function to trace unsigned integersPatrick Steinhardt, Aug 7, 2025
  51. 02/10 commit-graph: stop using signed integers to count Bloom filtersPatrick Steinhardt, Aug 7, 2025
  52. 03/10 commit-graph: fix type for some write optionsPatrick Steinhardt, Aug 7, 2025
  53. Junio C HamanoAug 7, 2025
  54. Patrick SteinhardtAug 11, 2025
  55. 04/10 commit-graph: fix sign comparison warningsPatrick Steinhardt, Aug 7, 2025
  56. 05/10 commit-graph: stop using `the_hash_algo` via macrosPatrick Steinhardt, Aug 7, 2025
  57. 06/10 commit-graph: store the hash algorithm instead of its lengthPatrick Steinhardt, Aug 7, 2025
  58. 07/10 commit-graph: refactor `parse_commit_graph()` to take a repositoryPatrick Steinhardt, Aug 7, 2025
  59. 08/10 commit-graph: stop using `the_hash_algo`Patrick Steinhardt, Aug 7, 2025
  60. 09/10 commit-graph: stop using `the_repository`Patrick Steinhardt, Aug 7, 2025
  61. 10/10 commit-graph: stop passing in redundant repositoryPatrick Steinhardt, Aug 7, 2025
  62. 0/6 commit-graph: remove reliance on global statePatrick Steinhardt, Aug 15, 2025
  63. 1/6 commit-graph: stop using `the_hash_algo` via macrosPatrick Steinhardt, Aug 15, 2025
  64. 2/6 commit-graph: store the hash algorithm instead of its lengthPatrick Steinhardt, Aug 15, 2025
  65. 3/6 commit-graph: refactor `parse_commit_graph()` to take a repositoryPatrick Steinhardt, Aug 15, 2025
  66. 4/6 commit-graph: stop using `the_hash_algo`Patrick Steinhardt, Aug 15, 2025
  67. 5/6 commit-graph: stop using `the_repository`Patrick Steinhardt, Aug 15, 2025
  68. 6/6 commit-graph: stop passing in redundant repositoryPatrick Steinhardt, Aug 15, 2025
  69. Derrick StoleeAug 15, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.