mirror of
https://github.com/git/git
synced 2024-11-05 01:58:18 +00:00
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:
parent
3079026fc1
commit
d0cbc75680
2 changed files with 16 additions and 6 deletions
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,
|
||||
|
|
|
@ -101,4 +101,9 @@ void negotiate_using_fetch(const struct oid_array *negotiation_tips,
|
|||
*/
|
||||
int report_unmatched_refs(struct ref **sought, int nr_sought);
|
||||
|
||||
/*
|
||||
* Return true if checks for broken objects in received pack are required.
|
||||
*/
|
||||
int fetch_pack_fsck_objects(void);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue