diff options
author | Junio C Hamano <gitster@pobox.com> | 2022-08-03 13:36:08 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-08-03 13:36:08 -0700 |
commit | 37e4bdd5ee5d6a7e09feaf5857299aac8fd56aeb (patch) | |
tree | 68792e9cddee8c9d9a738e2547546c7a311aa4ce /commit-graph.c | |
parent | f1a0db23ad269d46ae43fd34d04ab6065081a92f (diff) | |
parent | 9550f6c16a8be18bd4868909d4d5e29d05bd9733 (diff) | |
download | git-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.c | 12 |
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); } |