git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Justin Tobler <jltobler@gmail.com>
To: git@vger.kernel.org
Cc: Justin Tobler <jltobler@gmail.com>
Subject: [PATCH 1/5] bundle: add bundle verification options type
Date: Thu, 21 Nov 2024 14:41:15 -0600	[thread overview]
Message-ID: <20241121204119.1440773-2-jltobler@gmail.com> (raw)
In-Reply-To: <20241121204119.1440773-1-jltobler@gmail.com>

Bundle verification performed as part of `unbundle()` is configurable
via providing `verify_bundle_flags`. This is done by invoking
`verify_bundle()` and propagating the set flags. If the
`VERIFY_BUNDLE_FSCK` flag is provided, the `fsck-objects` flag is
specified when invoking git-index-pack(1) to perform fsck checks on the
objects in the bundle.

Introduce a new type, `verify_bundle_opts`, and update `unbundle()` to
accept this instead of `verify_bundle_flags` to perform the same
verification configuration. In a subsequent commit, `verify_bundle_opts`
will be extended to support configuration of fsck message severity.

Signed-off-by: Justin Tobler <jltobler@gmail.com>
---
 builtin/bundle.c |  2 +-
 bundle-uri.c     | 13 ++++++++-----
 bundle.c         | 14 +++++++++-----
 bundle.h         | 14 +++++++++-----
 transport.c      |  6 ++++--
 5 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/builtin/bundle.c b/builtin/bundle.c
index 127518c2a8..15ac75ab51 100644
--- a/builtin/bundle.c
+++ b/builtin/bundle.c
@@ -218,7 +218,7 @@ static int cmd_bundle_unbundle(int argc, const char **argv, const char *prefix)
 		strvec_pushl(&extra_index_pack_args, "-v", "--progress-title",
 			     _("Unbundling objects"), NULL);
 	ret = !!unbundle(the_repository, &header, bundle_fd,
-			 &extra_index_pack_args, 0) ||
+			 &extra_index_pack_args, NULL) ||
 		list_bundle_refs(&header, argc, argv);
 	bundle_header_release(&header);
 
diff --git a/bundle-uri.c b/bundle-uri.c
index 0df66e2872..ed3afcaeb3 100644
--- a/bundle-uri.c
+++ b/bundle-uri.c
@@ -361,12 +361,16 @@ static int copy_uri_to_file(const char *filename, const char *uri)
 
 static int unbundle_from_file(struct repository *r, const char *file)
 {
-	int result = 0;
-	int bundle_fd;
+	struct verify_bundle_opts opts = {
+		.flags = VERIFY_BUNDLE_QUIET |
+			 (fetch_pack_fsck_objects() ? VERIFY_BUNDLE_FSCK : 0)
+	};
 	struct bundle_header header = BUNDLE_HEADER_INIT;
-	struct string_list_item *refname;
 	struct strbuf bundle_ref = STRBUF_INIT;
+	struct string_list_item *refname;
 	size_t bundle_prefix_len;
+	int result = 0;
+	int bundle_fd;
 
 	bundle_fd = read_bundle_header(file, &header);
 	if (bundle_fd < 0) {
@@ -379,8 +383,7 @@ static int unbundle_from_file(struct repository *r, const char *file)
 	 * a reachable ref pointing to the new tips, which will reach
 	 * the prerequisite commits.
 	 */
-	result = unbundle(r, &header, bundle_fd, NULL,
-			  VERIFY_BUNDLE_QUIET | (fetch_pack_fsck_objects() ? VERIFY_BUNDLE_FSCK : 0));
+	result = unbundle(r, &header, bundle_fd, NULL, &opts);
 	if (result) {
 		result = 1;
 		goto cleanup;
diff --git a/bundle.c b/bundle.c
index 4773b51eb1..db17f50ee0 100644
--- a/bundle.c
+++ b/bundle.c
@@ -626,13 +626,17 @@ int create_bundle(struct repository *r, const char *path,
 	return ret;
 }
 
-int unbundle(struct repository *r, struct bundle_header *header,
-	     int bundle_fd, struct strvec *extra_index_pack_args,
-	     enum verify_bundle_flags flags)
+int unbundle(struct repository *r, struct bundle_header *header, int bundle_fd,
+	     struct strvec *extra_index_pack_args,
+	     struct verify_bundle_opts *_opts)
 {
 	struct child_process ip = CHILD_PROCESS_INIT;
+	struct verify_bundle_opts opts = { 0 };
 
-	if (verify_bundle(r, header, flags))
+	if (_opts)
+		opts = *_opts;
+
+	if (verify_bundle(r, header, opts.flags))
 		return -1;
 
 	strvec_pushl(&ip.args, "index-pack", "--fix-thin", "--stdin", NULL);
@@ -641,7 +645,7 @@ int unbundle(struct repository *r, struct bundle_header *header,
 	if (header->filter.choice)
 		strvec_push(&ip.args, "--promisor=from-bundle");
 
-	if (flags & VERIFY_BUNDLE_FSCK)
+	if (opts.flags & VERIFY_BUNDLE_FSCK)
 		strvec_push(&ip.args, "--fsck-objects");
 
 	if (extra_index_pack_args)
diff --git a/bundle.h b/bundle.h
index 5ccc9a061a..bddf44c267 100644
--- a/bundle.h
+++ b/bundle.h
@@ -39,6 +39,10 @@ enum verify_bundle_flags {
 int verify_bundle(struct repository *r, struct bundle_header *header,
 		  enum verify_bundle_flags flags);
 
+struct verify_bundle_opts {
+	enum verify_bundle_flags flags;
+};
+
 /**
  * Unbundle after reading the header with read_bundle_header().
  *
@@ -49,12 +53,12 @@ int verify_bundle(struct repository *r, struct bundle_header *header,
  * (e.g. "-v" for verbose/progress), NULL otherwise. The provided
  * "extra_index_pack_args" (if any) will be strvec_clear()'d for you.
  *
- * Before unbundling, this method will call verify_bundle() with the
- * given 'flags'.
+ * Before unbundling, this method will call verify_bundle() with 'flags'
+ * provided in 'opts'.
  */
-int unbundle(struct repository *r, struct bundle_header *header,
-	     int bundle_fd, struct strvec *extra_index_pack_args,
-	     enum verify_bundle_flags flags);
+int unbundle(struct repository *r, struct bundle_header *header, int bundle_fd,
+	     struct strvec *extra_index_pack_args,
+	     struct verify_bundle_opts *opts);
 int list_bundle_refs(struct bundle_header *header,
 		int argc, const char **argv);
 
diff --git a/transport.c b/transport.c
index 47fda6a773..7e0ec4adc9 100644
--- a/transport.c
+++ b/transport.c
@@ -176,6 +176,8 @@ static int fetch_refs_from_bundle(struct transport *transport,
 				  int nr_heads UNUSED,
 				  struct ref **to_fetch UNUSED)
 {
+	struct verify_bundle_opts opts = { .flags = fetch_pack_fsck_objects() ?
+							    VERIFY_BUNDLE_FSCK : 0 };
 	struct bundle_transport_data *data = transport->data;
 	struct strvec extra_index_pack_args = STRVEC_INIT;
 	int ret;
@@ -185,9 +187,9 @@ static int fetch_refs_from_bundle(struct transport *transport,
 
 	if (!data->get_refs_from_bundle_called)
 		get_refs_from_bundle_inner(transport);
+
 	ret = unbundle(the_repository, &data->header, data->fd,
-		       &extra_index_pack_args,
-		       fetch_pack_fsck_objects() ? VERIFY_BUNDLE_FSCK : 0);
+		       &extra_index_pack_args, &opts);
 	transport->hash_algo = data->header.hash_algo;
 
 	strvec_clear(&extra_index_pack_args);
-- 
2.47.0


  reply	other threads:[~2024-11-21 20:44 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 ` Justin Tobler [this message]
2024-11-22  1:21   ` [PATCH 1/5] bundle: add bundle verification options type 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   ` [PATCH v3 0/4] propagate fsck message severity for " Justin Tobler
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=20241121204119.1440773-2-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).