diff options
author | Derrick Stolee <dstolee@microsoft.com> | 2018-06-27 09:24:29 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-06-27 10:27:04 -0700 |
commit | ee79705311c190e61ac35d67705d387fdeae8c21 (patch) | |
tree | 100f986062b5bc7386c4136a55bbd376ed6fbd6d | |
parent | commit-graph: fix GRAPH_MIN_SIZE (diff) | |
download | tgif-ee79705311c190e61ac35d67705d387fdeae8c21.tar.xz |
commit-graph: parse commit from chosen graph
Before verifying a commit-graph file against the object database, we
need to parse all commits from the given commit-graph file. Create
parse_commit_in_graph_one() to target a given struct commit_graph.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | commit-graph.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/commit-graph.c b/commit-graph.c index f83f6d2373..e77b19971d 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -314,7 +314,7 @@ static int find_commit_in_graph(struct commit *item, struct commit_graph *g, uin } } -int parse_commit_in_graph(struct commit *item) +static int parse_commit_in_graph_one(struct commit_graph *g, struct commit *item) { uint32_t pos; @@ -322,9 +322,21 @@ int parse_commit_in_graph(struct commit *item) return 0; if (item->object.parsed) return 1; + + if (find_commit_in_graph(item, g, &pos)) + return fill_commit_in_graph(item, g, pos); + + return 0; +} + +int parse_commit_in_graph(struct commit *item) +{ + if (!core_commit_graph) + return 0; + prepare_commit_graph(); - if (commit_graph && find_commit_in_graph(item, commit_graph, &pos)) - return fill_commit_in_graph(item, commit_graph, pos); + if (commit_graph) + return parse_commit_in_graph_one(commit_graph, item); return 0; } |