[PATCH 1/6] object.c: parse commit in graph first
- From
Derrick Stolee <dstolee@microsoft.com>
- Date
- Apr 3, 2018, 16:51 UTC
- Message-ID
- <20180403165143.80661-2-dstolee@microsoft.com>
- In-Reply-To
- <20180403165143.80661-1-dstolee@microsoft.com>
Most code paths load commits using lookup_commit() and then parse_commit(). In some cases, including some branch lookups, the commit is parsed using parse_object_buffer() which side-steps parse_commit() in favor of parse_commit_buffer().
Before adding generation numbers to the commit-graph, we need to ensure that any commit that exists in the graph is loaded from the graph, so check parse_commit_in_graph() before calling parse_commit_buffer().
Signed-off-by: Derrick Stolee <dstolee@microsoft.com> --- object.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/object.c b/object.c index e6ad3f61f0..4cd3e98e04 100644 --- a/object.c +++ b/object.c @@ -3,6 +3,7 @@ #include "blob.h" #include "tree.h" #include "commit.h" +#include "commit-graph.h" #include "tag.h" static struct object **obj_hash; @@ -207,7 +208,8 @@ struct object *parse_object_buffer(const struct object_id *oid, enum object_type } else if (type == OBJ_COMMIT) { struct commit *commit = lookup_commit(oid); if (commit) { - if (parse_commit_buffer(commit, buffer, size)) + if (!parse_commit_in_graph(commit) && + parse_commit_buffer(commit, buffer, size)) return NULL; if (!get_cached_commit_buffer(commit, NULL)) { set_commit_buffer(commit, buffer, size);
-- 2.17.0.rc0