fetch-pack: expose fsckObjects configuration logic
Currently, we can use "transfer.fsckObjects" and the more specific "fetch.fsckObjects" to control checks for broken objects in received packs during fetches. However, these configurations were only acknowledged by `fetch-pack.c:get_pack` and did not take effect in direct bundle fetches or fetches with _bundle-uri_ enabled. This commit exposes the fetch-then-transfer configuration logic by adding a new function `fetch_pack_fsck_objects` in fetch-pack.h. This new function is used to replace the assignment for `fsck_objects` in `fetch-pack.c:get_pack`. In the next commit, this function will also be used to extend fsck support for bundle-involved fetches. Helped-by: Junio C Hamano <gitster@pobox.com> Helped-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Xing Xin <xingxin.xx@bytedance.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
17
fetch-pack.c
17
fetch-pack.c
@@ -954,12 +954,7 @@ static int get_pack(struct fetch_pack_args *args,
|
||||
strvec_push(&cmd.args, alternate_shallow_file);
|
||||
}
|
||||
|
||||
if (fetch_fsck_objects >= 0
|
||||
? fetch_fsck_objects
|
||||
: transfer_fsck_objects >= 0
|
||||
? transfer_fsck_objects
|
||||
: 0)
|
||||
fsck_objects = 1;
|
||||
fsck_objects = fetch_pack_fsck_objects();
|
||||
|
||||
if (do_keep || args->from_promisor || index_pack_args || fsck_objects) {
|
||||
if (pack_lockfiles || fsck_objects)
|
||||
@@ -2046,6 +2041,16 @@ static const struct object_id *iterate_ref_map(void *cb_data)
|
||||
return &ref->old_oid;
|
||||
}
|
||||
|
||||
int fetch_pack_fsck_objects(void)
|
||||
{
|
||||
fetch_pack_setup();
|
||||
if (fetch_fsck_objects >= 0)
|
||||
return fetch_fsck_objects;
|
||||
if (transfer_fsck_objects >= 0)
|
||||
return transfer_fsck_objects;
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct ref *fetch_pack(struct fetch_pack_args *args,
|
||||
int fd[],
|
||||
const struct ref *ref,
|
||||
|
||||
Reference in New Issue
Block a user