summaryrefslogtreecommitdiff
path: root/commit-graph.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-08-03 13:36:08 -0700
committerJunio C Hamano <gitster@pobox.com>2022-08-03 13:36:08 -0700
commit37e4bdd5ee5d6a7e09feaf5857299aac8fd56aeb (patch)
tree68792e9cddee8c9d9a738e2547546c7a311aa4ce /commit-graph.c
parentf1a0db23ad269d46ae43fd34d04ab6065081a92f (diff)
parent9550f6c16a8be18bd4868909d4d5e29d05bd9733 (diff)
downloadgit-37e4bdd5ee5d6a7e09feaf5857299aac8fd56aeb.tar.gz
Merge branch 'tb/commit-graph-genv2-upgrade-fix'
There was a bug in the codepath to upgrade generation information in commit-graph from v1 to v2 format, which has been corrected. * tb/commit-graph-genv2-upgrade-fix: commit-graph: fix corrupt upgrade from generation v1 to v2 commit-graph: introduce `repo_find_commit_pos_in_graph()` t5318: demonstrate commit-graph generation v2 corruption
Diffstat (limited to 'commit-graph.c')
-rw-r--r--commit-graph.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/commit-graph.c b/commit-graph.c
index cc3c966596..f2a36032f8 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -888,6 +888,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;
@@ -945,9 +953,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);
}