diff options
Diffstat (limited to '_support/git-patches/v2.33.1.gl3/0005-commit-graph-split-out-function-to-search-commit-pos.patch')
-rw-r--r-- | _support/git-patches/v2.33.1.gl3/0005-commit-graph-split-out-function-to-search-commit-pos.patch | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/_support/git-patches/v2.33.1.gl3/0005-commit-graph-split-out-function-to-search-commit-pos.patch b/_support/git-patches/v2.33.1.gl3/0005-commit-graph-split-out-function-to-search-commit-pos.patch deleted file mode 100644 index 0964f5b98..000000000 --- a/_support/git-patches/v2.33.1.gl3/0005-commit-graph-split-out-function-to-search-commit-pos.patch +++ /dev/null @@ -1,145 +0,0 @@ -From 809ea28f809e52d3204b597637b2f5e072c140f8 Mon Sep 17 00:00:00 2001 -Message-Id: <809ea28f809e52d3204b597637b2f5e072c140f8.1630319075.git.ps@pks.im> -In-Reply-To: <29ef1f27fed21b5b7d3c996a01f1364e7e841917.1630319075.git.ps@pks.im> -References: <29ef1f27fed21b5b7d3c996a01f1364e7e841917.1630319075.git.ps@pks.im> -From: Patrick Steinhardt <ps@pks.im> -Date: Mon, 9 Aug 2021 10:11:59 +0200 -Subject: [PATCH 5/6] commit-graph: split out function to search commit - position - -The function `find_commit_in_graph()` assumes that the caller has passed -an object which was already determined to be a commit given that it will -access the commit's graph position, which is stored in a commit slab. In -a subsequent patch, we want to search for an object ID though without -knowing whether it is a commit or not, which is not currently possible. - -Split out the logic to search the commit graph for a given object ID to -prepare for this change. This commit also renames the function to -`find_commit_pos_in_graph()`, which more accurately reflects what this -function does. Furthermore, in order to allow for the searched object ID -to be const, we need to adjust `bsearch_graph()`'s signature to accept a -constant object ID as input, too. - -Signed-off-by: Patrick Steinhardt <ps@pks.im> -Signed-off-by: Junio C Hamano <gitster@pobox.com> ---- - commit-graph.c | 55 +++++++++++++++++++++++++++----------------------- - 1 file changed, 30 insertions(+), 25 deletions(-) - -diff --git a/commit-graph.c b/commit-graph.c -index 3860a0d847..8c4c7262c8 100644 ---- a/commit-graph.c -+++ b/commit-graph.c -@@ -723,7 +723,7 @@ void close_commit_graph(struct raw_object_store *o) - o->commit_graph = NULL; - } - --static int bsearch_graph(struct commit_graph *g, struct object_id *oid, uint32_t *pos) -+static int bsearch_graph(struct commit_graph *g, const struct object_id *oid, uint32_t *pos) - { - return bsearch_hash(oid->hash, g->chunk_oid_fanout, - g->chunk_oid_lookup, g->hash_len, pos); -@@ -864,25 +864,30 @@ static int fill_commit_in_graph(struct repository *r, - return 1; - } - --static int find_commit_in_graph(struct commit *item, struct commit_graph *g, uint32_t *pos) -+static int search_commit_pos_in_graph(const struct object_id *id, struct commit_graph *g, uint32_t *pos) -+{ -+ struct commit_graph *cur_g = g; -+ uint32_t lex_index; -+ -+ while (cur_g && !bsearch_graph(cur_g, id, &lex_index)) -+ cur_g = cur_g->base_graph; -+ -+ if (cur_g) { -+ *pos = lex_index + cur_g->num_commits_in_base; -+ return 1; -+ } -+ -+ return 0; -+} -+ -+static int find_commit_pos_in_graph(struct commit *item, struct commit_graph *g, uint32_t *pos) - { - uint32_t graph_pos = commit_graph_position(item); - if (graph_pos != COMMIT_NOT_FROM_GRAPH) { - *pos = graph_pos; - return 1; - } else { -- struct commit_graph *cur_g = g; -- uint32_t lex_index; -- -- while (cur_g && !bsearch_graph(cur_g, &(item->object.oid), &lex_index)) -- cur_g = cur_g->base_graph; -- -- if (cur_g) { -- *pos = lex_index + cur_g->num_commits_in_base; -- return 1; -- } -- -- return 0; -+ return search_commit_pos_in_graph(&item->object.oid, g, pos); - } - } - -@@ -895,7 +900,7 @@ static int parse_commit_in_graph_one(struct repository *r, - if (item->object.parsed) - return 1; - -- if (find_commit_in_graph(item, g, &pos)) -+ if (find_commit_pos_in_graph(item, g, &pos)) - return fill_commit_in_graph(r, item, g, pos); - - return 0; -@@ -921,7 +926,7 @@ void load_commit_graph_info(struct repository *r, struct commit *item) - uint32_t pos; - if (!prepare_commit_graph(r)) - return; -- if (find_commit_in_graph(item, r->objects->commit_graph, &pos)) -+ if (find_commit_pos_in_graph(item, r->objects->commit_graph, &pos)) - fill_commit_graph_info(item, r->objects->commit_graph, pos); - } - -@@ -1091,9 +1096,9 @@ static int write_graph_chunk_data(struct hashfile *f, - edge_value += ctx->new_num_commits_in_base; - else if (ctx->new_base_graph) { - uint32_t pos; -- if (find_commit_in_graph(parent->item, -- ctx->new_base_graph, -- &pos)) -+ if (find_commit_pos_in_graph(parent->item, -+ ctx->new_base_graph, -+ &pos)) - edge_value = pos; - } - -@@ -1122,9 +1127,9 @@ static int write_graph_chunk_data(struct hashfile *f, - edge_value += ctx->new_num_commits_in_base; - else if (ctx->new_base_graph) { - uint32_t pos; -- if (find_commit_in_graph(parent->item, -- ctx->new_base_graph, -- &pos)) -+ if (find_commit_pos_in_graph(parent->item, -+ ctx->new_base_graph, -+ &pos)) - edge_value = pos; - } - -@@ -1235,9 +1240,9 @@ static int write_graph_chunk_extra_edges(struct hashfile *f, - edge_value += ctx->new_num_commits_in_base; - else if (ctx->new_base_graph) { - uint32_t pos; -- if (find_commit_in_graph(parent->item, -- ctx->new_base_graph, -- &pos)) -+ if (find_commit_pos_in_graph(parent->item, -+ ctx->new_base_graph, -+ &pos)) - edge_value = pos; - } - --- -2.33.0 - |