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

[PATCH v6 07/16] t/helper/test-read-graph: implement `bloom-filters` mode

From
Taylor Blau <me@ttaylorr.com>
Date
Jan 31, 2024, 22:52 UTC
Message-ID
<286fd7dcdb99af9b06b2f8e9f9adfcdc6b7d70d8.1706741516.git.me@ttaylorr.com>
In-Reply-To
<cover.1706741516.git.me@ttaylorr.com>

Implement a mode of the "read-graph" test helper to dump out the hexadecimal contents of the Bloom filter(s) contained in a commit-graph.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
---
 t/helper/test-read-graph.c | 44 +++++++++++++++++++++++++++++++++-----
 1 file changed, 39 insertions(+), 5 deletions(-)
diff --git a/t/helper/test-read-graph.c b/t/helper/test-read-graph.c
index 3375392f6c..da9ac8584d 100644
--- a/t/helper/test-read-graph.c
+++ b/t/helper/test-read-graph.c
@@ -47,10 +47,32 @@ static void dump_graph_info(struct commit_graph *graph)
 	printf("\n");
 }
 
-int cmd__read_graph(int argc UNUSED, const char **argv UNUSED)
+static void dump_graph_bloom_filters(struct commit_graph *graph)
+{
+	uint32_t i;
+
+	for (i = 0; i < graph->num_commits + graph->num_commits_in_base; i++) {
+		struct bloom_filter filter = { 0 };
+		size_t j;
+
+		if (load_bloom_filter_from_graph(graph, &filter, i) < 0) {
+			fprintf(stderr, "missing Bloom filter for graph "
+				"position %"PRIu32"\n", i);
+			continue;
+		}
+
+		for (j = 0; j < filter.len; j++)
+			printf("%02x", filter.data[j]);
+		if (filter.len)
+			printf("\n");
+	}
+}
+
+int cmd__read_graph(int argc, const char **argv)
 {
 	struct commit_graph *graph = NULL;
 	struct object_directory *odb;
+	int ret = 0;
 
 	setup_git_directory();
 	odb = the_repository->objects->odb;
@@ -58,12 +80,24 @@ int cmd__read_graph(int argc UNUSED, const char **argv UNUSED)
 	prepare_repo_settings(the_repository);
 
 	graph = read_commit_graph_one(the_repository, odb);
-	if (!graph)
-		return 1;
+	if (!graph) {
+		ret = 1;
+		goto done;
+	}
 
-	dump_graph_info(graph);
+	if (argc <= 1)
+		dump_graph_info(graph);
+	else if (!strcmp(argv[1], "bloom-filters"))
+		dump_graph_bloom_filters(graph);
+	else {
+		fprintf(stderr, "unknown sub-command: '%s'\n", argv[1]);
+		ret = 1;
+	}
 
+done:
 	UNLEAK(graph);
 
-	return 0;
+	return ret;
 }
+
+
-- 
2.43.0.509.g253f65a7fc
Previous: Taylor BlauNext: Taylor Blau
Message 8 of 36 in “bloom: changed-path Bloom filters v2 (& sundries)”
  1. 00/16 bloom: changed-path Bloom filters v2 (& sundries)Taylor Blau, Jan 31, 2024
  2. 01/16 t/t4216-log-bloom.sh: harden `test_bloom_filters_not_used()`Taylor Blau, Jan 31, 2024
  3. 02/16 revision.c: consult Bloom filters for root commitsTaylor Blau, Jan 31, 2024
  4. 03/16 commit-graph: ensure Bloom filters are read with consistent settingsTaylor Blau, Jan 31, 2024
  5. 04/16 gitformat-commit-graph: describe version 2 of BDATTaylor Blau, Jan 31, 2024
  6. 05/16 t/helper/test-read-graph.c: extract `dump_graph_info()`Taylor Blau, Jan 31, 2024
  7. 06/16 bloom.h: make `load_bloom_filter_from_graph()` publicTaylor Blau, Jan 31, 2024
  8. 07/16 t/helper/test-read-graph: implement `bloom-filters` modeTaylor Blau, Jan 31, 2024
  9. 08/16 t4216: test changed path filters with high bit pathsTaylor Blau, Jan 31, 2024
  10. 09/16 repo-settings: introduce commitgraph.changedPathsVersionTaylor Blau, Jan 31, 2024
  11. 10/16 bloom: annotate filters with hash versionTaylor Blau, Jan 31, 2024
  12. 11/16 bloom: prepare to discard incompatible Bloom filtersTaylor Blau, Jan 31, 2024
  13. 12/16 commit-graph: unconditionally load Bloom filtersTaylor Blau, Jan 31, 2024
  14. 13/16 commit-graph: new Bloom filter version that fixes murmur3Taylor Blau, Jan 31, 2024
  15. SZEDER GáborFeb 25, 2024
  16. Jiang XinFeb 28, 2024
  17. 14/16 object.h: fix mis-aligned flag bits tableTaylor Blau, Jan 31, 2024
  18. 15/16 commit-graph: reuse existing Bloom filters where possibleTaylor Blau, Jan 31, 2024
  19. 16/16 bloom: introduce `deinit_bloom_filters()`Taylor Blau, Jan 31, 2024
  20. 00/16 bloom: changed-path Bloom filters v2 (& sundries)Taylor Blau, Jun 25, 2024
  21. 01/16 t/t4216-log-bloom.sh: harden `test_bloom_filters_not_used()`Taylor Blau, Jun 25, 2024
  22. 02/16 revision.c: consult Bloom filters for root commitsTaylor Blau, Jun 25, 2024
  23. 03/16 commit-graph: ensure Bloom filters are read with consistent settingsTaylor Blau, Jun 25, 2024
  24. 04/16 gitformat-commit-graph: describe version 2 of BDATTaylor Blau, Jun 25, 2024
  25. 05/16 t/helper/test-read-graph.c: extract `dump_graph_info()`Taylor Blau, Jun 25, 2024
  26. 06/16 bloom.h: make `load_bloom_filter_from_graph()` publicTaylor Blau, Jun 25, 2024
  27. 07/16 t/helper/test-read-graph: implement `bloom-filters` modeTaylor Blau, Jun 25, 2024
  28. 08/16 t4216: test changed path filters with high bit pathsTaylor Blau, Jun 25, 2024
  29. 09/16 repo-settings: introduce commitgraph.changedPathsVersionTaylor Blau, Jun 25, 2024
  30. 10/16 bloom: annotate filters with hash versionTaylor Blau, Jun 25, 2024
  31. 11/16 bloom: prepare to discard incompatible Bloom filtersTaylor Blau, Jun 25, 2024
  32. 12/16 commit-graph: unconditionally load Bloom filtersTaylor Blau, Jun 25, 2024
  33. 13/16 commit-graph: new Bloom filter version that fixes murmur3Taylor Blau, Jun 25, 2024
  34. 14/16 object.h: fix mis-aligned flag bits tableTaylor Blau, Jun 25, 2024
  35. 15/16 commit-graph: reuse existing Bloom filters where possibleTaylor Blau, Jun 25, 2024
  36. 16/16 bloom: introduce `deinit_bloom_filters()`Taylor Blau, Jun 25, 2024

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.