summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerrick Stolee <dstolee@microsoft.com>2018-06-27 13:24:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-06-27 17:27:04 (GMT)
commitee79705311c190e61ac35d67705d387fdeae8c21 (patch)
tree100f986062b5bc7386c4136a55bbd376ed6fbd6d
parent0e3b97cccbec2bd01eae4b3267bf00a9bfb277d8 (diff)
downloadgit-ee79705311c190e61ac35d67705d387fdeae8c21.zip
git-ee79705311c190e61ac35d67705d387fdeae8c21.tar.gz
git-ee79705311c190e61ac35d67705d387fdeae8c21.tar.bz2
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.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/commit-graph.c b/commit-graph.c
index f83f6d2..e77b199 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;
}