Merge branch 'jt/avoid-lazy-fetch-commits'
Even in a repository with promisor remote, it is useless to attempt to lazily attempt fetching an object that is expected to be commit, because no "filter" mode omits commit objects. Take advantage of this assumption to fail fast on errors. * jt/avoid-lazy-fetch-commits: commit: don't lazy-fetch commits object-file: emit corruption errors when detected object-file: refactor map_loose_object_1() object-file: remove OBJECT_INFO_IGNORE_LOOSE
This commit is contained in:
15
commit.c
15
commit.c
@ -508,6 +508,17 @@ int repo_parse_commit_internal(struct repository *r,
|
||||
enum object_type type;
|
||||
void *buffer;
|
||||
unsigned long size;
|
||||
struct object_info oi = {
|
||||
.typep = &type,
|
||||
.sizep = &size,
|
||||
.contentp = &buffer,
|
||||
};
|
||||
/*
|
||||
* Git does not support partial clones that exclude commits, so set
|
||||
* OBJECT_INFO_SKIP_FETCH_OBJECT to fail fast when an object is missing.
|
||||
*/
|
||||
int flags = OBJECT_INFO_LOOKUP_REPLACE | OBJECT_INFO_SKIP_FETCH_OBJECT |
|
||||
OBJECT_INFO_DIE_IF_CORRUPT;
|
||||
int ret;
|
||||
|
||||
if (!item)
|
||||
@ -516,8 +527,8 @@ int repo_parse_commit_internal(struct repository *r,
|
||||
return 0;
|
||||
if (use_commit_graph && parse_commit_in_graph(r, item))
|
||||
return 0;
|
||||
buffer = repo_read_object_file(r, &item->object.oid, &type, &size);
|
||||
if (!buffer)
|
||||
|
||||
if (oid_object_info_extended(r, &item->object.oid, &oi, flags) < 0)
|
||||
return quiet_on_missing ? -1 :
|
||||
error("Could not read %s",
|
||||
oid_to_hex(&item->object.oid));
|
||||
|
||||
Reference in New Issue
Block a user