commit-graph: always load commit-graph information
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(). With generation numbers in the commit-graph, we need to ensure that any commit that exists in the commit-graph file has its generation number loaded. Create new load_commit_graph_info() method to fill in the information for a commit that exists only in the commit-graph file. Call it from parse_commit_buffer() after loading the other commit information from the given buffer. Only fill this information when specified by the 'check_graph' parameter. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
3afc679b3c
commit
e2838d85b6
7
commit.c
7
commit.c
@ -331,7 +331,7 @@ const void *detach_commit_buffer(struct commit *commit, unsigned long *sizep)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long size)
|
||||
int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long size, int check_graph)
|
||||
{
|
||||
const char *tail = buffer;
|
||||
const char *bufptr = buffer;
|
||||
@ -386,6 +386,9 @@ int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long s
|
||||
}
|
||||
item->date = parse_commit_date(bufptr, tail);
|
||||
|
||||
if (check_graph)
|
||||
load_commit_graph_info(item);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -412,7 +415,7 @@ int parse_commit_gently(struct commit *item, int quiet_on_missing)
|
||||
return error("Object %s not a commit",
|
||||
oid_to_hex(&item->object.oid));
|
||||
}
|
||||
ret = parse_commit_buffer(item, buffer, size);
|
||||
ret = parse_commit_buffer(item, buffer, size, 0);
|
||||
if (save_commit_buffer && !ret) {
|
||||
set_commit_buffer(item, buffer, size);
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user