[PATCH v4 01/10] commit-graph: fix regression when computing Bloom filters
- From
Abhishek Kumar via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Oct 7, 2020, 14:09 UTC
- Message-ID
- <fae81b534b14c8227454ff94e385fb16faee0e99.1602079785.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.676.v4.git.1602079785.gitgitgadget@gmail.com>
From: Abhishek Kumar <abhishekkumar8222@gmail.com>
commit_gen_cmp is used when writing a commit-graph to sort commits in generation order before computing Bloom filters. Since c49c82aa (commit: move members graph_pos, generation to a slab, 2020-06-17) made it so that 'commit_graph_generation()' returns 'GENERATION_NUMBER_INFINITY' during writing, we cannot call it within this function. Instead, access the generation number directly through the slab (i.e., by calling 'commit_graph_data_at(c)->generation') in order to access it while writing.
While measuring performance with `git commit-graph write --reachable --changed-paths` on the linux repository led to around 1m40s for both HEAD and master (and could be due to fault in my measurements), it is still the "right" thing to do.
Signed-off-by: Abhishek Kumar <abhishekkumar8222@gmail.com> --- commit-graph.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/commit-graph.c b/commit-graph.c index cb042bdba8..94503e584b 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -144,8 +144,8 @@ static int commit_gen_cmp(const void *va, const void *vb) const struct commit *a = *(const struct commit **)va; const struct commit *b = *(const struct commit **)vb; - uint32_t generation_a = commit_graph_generation(a); - uint32_t generation_b = commit_graph_generation(b); + uint32_t generation_a = commit_graph_data_at(a)->generation; + uint32_t generation_b = commit_graph_data_at(b)->generation; /* lower generation commits first */ if (generation_a < generation_b) return -1;
-- gitgitgadget