git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] bundle: use OPT_PASSTHRU_ARGV
@ 2023-07-29 20:40 René Scharfe
  0 siblings, 0 replies; only message in thread
From: René Scharfe @ 2023-07-29 20:40 UTC (permalink / raw)
  To: Git List

"git bundle" passes the progress control options to "git pack-objects"
by parsing and then recreating them explicitly.  Simplify that process
by using OPT_PASSTHRU_ARGV instead.

This also fixes --no-quiet, which has been doing the same as --quiet
since its introduction by 79862b6b77 (bundle-create: progress output
control, 2019-11-10) because it had been defined using OPT_SET_INT with
a value of 0, which sets 0 when negated as well.

Signed-off-by: René Scharfe <l.s.r@web.de>
---
 builtin/bundle.c       | 40 +++++++++++++++++-----------------------
 t/t6020-bundle-misc.sh |  6 ++++++
 2 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/builtin/bundle.c b/builtin/bundle.c
index 3f63631c03..3ad11dc5d0 100644
--- a/builtin/bundle.c
+++ b/builtin/bundle.c
@@ -68,42 +68,36 @@ static int parse_options_cmd_bundle(int argc,
 }

 static int cmd_bundle_create(int argc, const char **argv, const char *prefix) {
-	int all_progress_implied = 1;
-	int progress = isatty(STDERR_FILENO);
-	struct strvec pack_opts;
+	struct strvec pack_opts = STRVEC_INIT;
 	int version = -1;
 	int ret;
 	struct option options[] = {
-		OPT_SET_INT('q', "quiet", &progress,
-			    N_("do not show progress meter"), 0),
-		OPT_SET_INT(0, "progress", &progress,
-			    N_("show progress meter"), 1),
-		OPT_SET_INT_F(0, "all-progress", &progress,
-			      N_("historical; same as --progress"), 2,
-			      PARSE_OPT_HIDDEN),
-		OPT_HIDDEN_BOOL(0, "all-progress-implied",
-				&all_progress_implied,
-				N_("historical; does nothing")),
+		OPT_PASSTHRU_ARGV('q', "quiet", &pack_opts, NULL,
+				  N_("do not show progress meter"),
+				  PARSE_OPT_NOARG),
+		OPT_PASSTHRU_ARGV(0, "progress", &pack_opts, NULL,
+				  N_("show progress meter"),
+				  PARSE_OPT_NOARG),
+		OPT_PASSTHRU_ARGV(0, "all-progress", &pack_opts, NULL,
+				  N_("historical; same as --progress"),
+				  PARSE_OPT_NOARG | PARSE_OPT_HIDDEN),
+		OPT_PASSTHRU_ARGV(0, "all-progress-implied", &pack_opts, NULL,
+				  N_("historical; does nothing"),
+				  PARSE_OPT_NOARG | PARSE_OPT_HIDDEN),
 		OPT_INTEGER(0, "version", &version,
 			    N_("specify bundle format version")),
 		OPT_END()
 	};
 	char *bundle_file;

+	if (isatty(STDERR_FILENO))
+		strvec_push(&pack_opts, "--progress");
+	strvec_push(&pack_opts, "--all-progress-implied");
+
 	argc = parse_options_cmd_bundle(argc, argv, prefix,
 			builtin_bundle_create_usage, options, &bundle_file);
 	/* bundle internals use argv[1] as further parameters */

-	strvec_init(&pack_opts);
-	if (progress == 0)
-		strvec_push(&pack_opts, "--quiet");
-	else if (progress == 1)
-		strvec_push(&pack_opts, "--progress");
-	else if (progress == 2)
-		strvec_push(&pack_opts, "--all-progress");
-	if (progress && all_progress_implied)
-		strvec_push(&pack_opts, "--all-progress-implied");
-
 	if (!startup_info->have_repository)
 		die(_("Need a repository to create a bundle."));
 	ret = !!create_bundle(the_repository, bundle_file, argc, argv, &pack_opts, version);
diff --git a/t/t6020-bundle-misc.sh b/t/t6020-bundle-misc.sh
index dface8bcfe..3e6bcbf30c 100755
--- a/t/t6020-bundle-misc.sh
+++ b/t/t6020-bundle-misc.sh
@@ -619,6 +619,12 @@ test_expect_success TTY 'create --quiet disables all bundle progress' '
 	test_must_be_empty err
 '

+test_expect_success 'bundle progress with --no-quiet' '
+	GIT_PROGRESS_DELAY=0 \
+		git bundle create --no-quiet out.bundle --all 2>err &&
+	grep "%" err
+'
+
 test_expect_success 'read bundle over stdin' '
 	git bundle create some.bundle HEAD &&

--
2.41.0

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2023-07-29 20:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-29 20:40 [PATCH] bundle: use OPT_PASSTHRU_ARGV René Scharfe

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).