Message ID | d21c236b8dec9fd8c81a4224c1f63c511b04d8b9.1718109943.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | object checking related additions and fixes for bundles in fetches | expand |
"Xing Xin via GitGitGadget" <gitgitgadget@gmail.com> writes: > - 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(); > ... > +int fetch_pack_fsck_objects(void) > +{ > + fetch_pack_setup(); OK, this one is designed to be as lightweight as possible when it has already been called, so a potentially duplicated call would not cause too much worries here. > + if (fetch_fsck_objects >= 0) > + return fetch_fsck_objects; > + if (transfer_fsck_objects >= 0) > + return transfer_fsck_objects; > + return 0; > +} Much easier to follow. Nicely done.
diff --git a/fetch-pack.c b/fetch-pack.c index 7d2aef21add..3acff2baf09 100644 --- a/fetch-pack.c +++ b/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, diff --git a/fetch-pack.h b/fetch-pack.h index 6775d265175..b5c579cdae2 100644 --- a/fetch-pack.h +++ b/fetch-pack.h @@ -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