diff options
author | Taylor Blau <me@ttaylorr.com> | 2022-07-12 19:10:31 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-07-15 16:51:39 -0700 |
commit | 7805360b7a3be02057385bc9d17aa493120b9538 (patch) | |
tree | 6074401cd0c391f008ea3e9983de47cf87403a10 /commit-graph.c | |
parent | 2dd804cd12143741ea4188346fba250e821609b5 (diff) | |
download | git-7805360b7a3be02057385bc9d17aa493120b9538.tar.gz |
commit-graph: introduce `repo_find_commit_pos_in_graph()`
Low-level callers in systems that are adjacent to the commit-graph (like
the changed-path Bloom filter code) could benefit from being able to
call a function like `parse_commit_in_graph()` without modifying the
corresponding commit slab data.
This is useful in contexts where that slab data is being used to prepare
for an upcoming commit-graph write, where Git must be careful to avoid
clobbering any of that data during a read operation.
Introduce a low-level variant of `parse_commit_in_graph()` which returns
the graph position of a given commit only, without modifying any of the
slab data.
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'commit-graph.c')
-rw-r--r-- | commit-graph.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/commit-graph.c b/commit-graph.c index 441b36016b..7f69d8c2ec 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -898,6 +898,14 @@ static int find_commit_pos_in_graph(struct commit *item, struct commit_graph *g, } } +int repo_find_commit_pos_in_graph(struct repository *r, struct commit *c, + uint32_t *pos) +{ + if (!prepare_commit_graph(r)) + return 0; + return find_commit_pos_in_graph(c, r->objects->commit_graph, pos); +} + struct commit *lookup_commit_in_graph(struct repository *repo, const struct object_id *id) { struct commit *commit; @@ -955,9 +963,7 @@ int parse_commit_in_graph(struct repository *r, struct commit *item) void load_commit_graph_info(struct repository *r, struct commit *item) { uint32_t pos; - if (!prepare_commit_graph(r)) - return; - if (find_commit_pos_in_graph(item, r->objects->commit_graph, &pos)) + if (repo_find_commit_pos_in_graph(r, item, &pos)) fill_commit_graph_info(item, r->objects->commit_graph, pos); } |