From: Justin Tobler <jltobler@gmail.com>
To: git@vger.kernel.org
Cc: Justin Tobler <jltobler@gmail.com>
Subject: [PATCH v3 0/4] propagate fsck message severity for bundle fetch
Date: Wed, 27 Nov 2024 17:33:08 -0600 [thread overview]
Message-ID: <20241127233312.27710-1-jltobler@gmail.com> (raw)
In-Reply-To: <20241127005707.319881-1-jltobler@gmail.com>
Greetings,
With 63d903ff52 (unbundle: extend object verification for fetches,
2024-06-19), fsck checks are now performed on fetched bundles depending
on `transfer.fsckObjects` and `fetch.fsckObjects` configuration. This
works, but provides no means to override the default fsck message
severity as is done for other git-fetch(1) operations. This series aims
to propagate fsck message severity configuration to the underlying
git-index-pack(1) process executed on the bundle in a similar manner as
done with git-fetch-pack(1).
- Patches 1 and 2 adapt the bundle subsystem to support additional
options when performing `unbundle()`.
- Patch 3 adapts the fetch-pack subsystem to expose a means to
generate the message configuration arguments.
- Patch 4 wires the newly generated fsck configuration options to the
bundle options used when fetching from a bundle.
Changes in V3:
- The `fetch_pack_fsck_config()` has been updated to now return 1 when
the provided config variable is undhandled instead of returning -1.
This allows call sites to properly differentiate between errors and
unhandled config variables. To make this change, the handling of
`git_config_path()` errors was updated to return 0 instead of 1.
Both of these return values considered by `git_config()` to be a
success so there is no functional change. This allows returning 1 to
now indicate that the config variable was not process only.
- Added comment to document expected `fetch_pack_fsck_config()`
behavior and return values.
- Small comment style change.
Thanks
-Justin
Justin Tobler (4):
bundle: add bundle verification options type
bundle: support fsck message configuration
fetch-pack: split out fsck config parsing
transport: propagate fsck configuration during bundle fetch
builtin/bundle.c | 2 +-
bundle-uri.c | 7 +++++--
bundle.c | 13 +++++++++----
bundle.h | 17 ++++++++++++++---
fetch-pack.c | 26 ++++++++++++++++++--------
fetch-pack.h | 11 +++++++++++
t/t5607-clone-bundle.sh | 7 +++++++
transport.c | 26 ++++++++++++++++++++++++--
8 files changed, 89 insertions(+), 20 deletions(-)
Range-diff against v2:
1: da47f0aa0f = 1: da47f0aa0f bundle: add bundle verification options type
2: 19e91c9f99 ! 2: 5dbd0fa6b7 bundle: support fsck message configuration
@@ bundle.h: int verify_bundle(struct repository *r, struct bundle_header *header,
struct unbundle_opts {
enum verify_bundle_flags flags;
-+ /**
++ /*
+ * fsck_msg_types may optionally contain fsck message severity
+ * configuration. If present, this configuration gets directly appended
+ * to a '--fsck-objects' option and therefore must be prefixed with '='.
3: 527874e73d ! 3: b8db9af9e7 fetch-pack: split out fsck config parsing
@@ Commit message
`fetch_pack_fsck_config()` and expose it. In a subsequent commit, this
is used to provide fsck configuration when invoking `unbundle()`.
+ For `fetch_pack_fsck_config()` to discern between errors and unhandled
+ config variables, the return code when `git_config_path()` errors is
+ changed to a different value also indicating success. This frees up the
+ previous return code to now indicate the provided config variable
+ was unhandled. The behavior remains functionally the same.
+
Signed-off-by: Justin Tobler <jltobler@gmail.com>
## fetch-pack.c ##
@@ fetch-pack.c: static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
const char *msg_id;
@@ fetch-pack.c: static int fetch_pack_config_cb(const char *var, const char *value,
+ char *path ;
if (git_config_pathname(&path, var, value))
- return 1;
+- return 1;
- strbuf_addf(&fsck_msg_types, "%cskiplist=%s",
- fsck_msg_types.len ? ',' : '=', path);
++ return 0;
+ strbuf_addf(msg_types, "%cskiplist=%s",
+ msg_types->len ? ',' : '=', path);
free(path);
@@ fetch-pack.c: static int fetch_pack_config_cb(const char *var, const char *value
}
- return git_default_config(var, value, ctx, cb);
-+ return -1;
++ return 1;
+}
+
+static int fetch_pack_config_cb(const char *var, const char *value,
+ const struct config_context *ctx, void *cb)
+{
+ int ret = fetch_pack_fsck_config(var, value, &fsck_msg_types);
-+ if (ret < 0)
++ if (ret > 0)
+ return git_default_config(var, value, ctx, cb);
+
+ return ret;
@@ fetch-pack.h: int report_unmatched_refs(struct ref **sought, int nr_sought);
*/
int fetch_pack_fsck_objects(void);
++/*
++ * Check if the provided config variable pertains to fetch fsck and if so append
++ * the configuration to the provided strbuf.
++ *
++ * When a fetch fsck config option is successfully processed the function
++ * returns 0. If the provided config option is unrelated to fetch fsck, 1 is
++ * returned. Errors return -1.
++ */
+int fetch_pack_fsck_config(const char *var, const char *value,
+ struct strbuf *msg_types);
+
4: b1a3f73561 ! 4: cc8ae0a1c4 transport: propagate fsck configuration during bundle fetch
@@ transport.c: static struct ref *get_refs_from_bundle(struct transport *transport
+ int ret;
+
+ ret = fetch_pack_fsck_config(var, value, msg_types);
-+ if (ret < 0)
++ if (ret > 0)
+ return 0;
+
+ return ret;
base-commit: 4083a6f05206077a50af7658bedc17a94c54607d
--
2.47.0
next prev parent reply other threads:[~2024-11-27 23:35 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-21 20:41 [PATCH 0/5] propagate fsck message severity for bundle fetch Justin Tobler
2024-11-21 20:41 ` [PATCH 1/5] bundle: add bundle verification options type Justin Tobler
2024-11-22 1:21 ` Junio C Hamano
2024-11-22 15:22 ` Justin Tobler
2024-11-26 9:08 ` Patrick Steinhardt
2024-11-26 15:59 ` Justin Tobler
2024-11-21 20:41 ` [PATCH 2/5] bundle: support fsck message configuration Justin Tobler
2024-11-22 1:30 ` Junio C Hamano
2024-11-22 15:44 ` Justin Tobler
2024-11-25 1:33 ` Junio C Hamano
2024-11-21 20:41 ` [PATCH 3/5] fetch-pack: introduce `fetch_pack_options` Justin Tobler
2024-11-22 1:46 ` Junio C Hamano
2024-11-22 3:46 ` Junio C Hamano
2024-11-22 17:31 ` Justin Tobler
2024-11-21 20:41 ` [PATCH 4/5] fetch-pack: expose `fetch_pack_config_cb()` Justin Tobler
2024-11-22 1:57 ` Junio C Hamano
2024-11-22 17:41 ` Justin Tobler
2024-11-22 16:45 ` shejialuo
2024-11-27 1:21 ` Justin Tobler
2024-11-21 20:41 ` [PATCH 5/5] transport: propagate fsck configuration during bundle fetch Justin Tobler
2024-11-22 1:59 ` Junio C Hamano
2024-11-27 0:57 ` [PATCH v2 0/4] propagate fsck message severity for " Justin Tobler
2024-11-27 0:57 ` [PATCH v2 1/4] bundle: add bundle verification options type Justin Tobler
2024-11-27 0:57 ` [PATCH v2 2/4] bundle: support fsck message configuration Justin Tobler
2024-11-27 5:44 ` Patrick Steinhardt
2024-11-27 0:57 ` [PATCH v2 3/4] fetch-pack: split out fsck config parsing Justin Tobler
2024-11-27 5:44 ` Patrick Steinhardt
2024-11-27 17:37 ` Justin Tobler
2024-11-27 0:57 ` [PATCH v2 4/4] transport: propagate fsck configuration during bundle fetch Justin Tobler
2024-11-27 1:39 ` Junio C Hamano
2024-11-27 23:33 ` Justin Tobler [this message]
2024-11-27 23:33 ` [PATCH v3 1/4] bundle: add bundle verification options type Justin Tobler
2024-11-27 23:33 ` [PATCH v3 2/4] bundle: support fsck message configuration Justin Tobler
2024-11-27 23:33 ` [PATCH v3 3/4] fetch-pack: split out fsck config parsing Justin Tobler
2024-11-28 3:25 ` Junio C Hamano
2024-12-03 9:34 ` Patrick Steinhardt
2024-12-03 14:23 ` Justin Tobler
2024-12-03 14:28 ` Patrick Steinhardt
2024-12-03 23:17 ` Junio C Hamano
2024-12-04 2:39 ` Junio C Hamano
2024-11-27 23:33 ` [PATCH v3 4/4] transport: propagate fsck configuration during bundle fetch Justin Tobler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241127233312.27710-1-jltobler@gmail.com \
--to=jltobler@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).