Subject: [PATCH] fetch: reject --no-ipv[46]

From: Junio C Hamano <[email-masked]>
Date: Tue, 18 Jul 2023 14:45:59 -0700

Now we have introduced OPT_IPVERSION(), tweak its implementation so
that "git clone", "git fetch", and "git push" reject the negated
form of "Use only IP version N" options.

Signed-off-by: Junio C Hamano <[email-masked]>
---
 parse-options.h       |  8 ++++----
 t/t5516-fetch-push.sh | 11 +++++++++++
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git c/parse-options.h w/parse-options.h
index e35710733d..57a7fe9d91 100644
--- c/parse-options.h
+++ w/parse-options.h
@@ -582,9 +582,9 @@ int parse_opt_tracking_mode(const struct option *, const char *, int);
 #define OPT_AUTOSTASH(v) OPT_BOOL(0, "autostash", v, N_("automatically stash/stash pop before and after"))
 
 #define OPT_IPVERSION(v) \
-	OPT_SET_INT('4', "ipv4", (v), N_("use IPv4 addresses only"), \
-		TRANSPORT_FAMILY_IPV4), \
-	OPT_SET_INT('6', "ipv6", (v), N_("use IPv6 addresses only"), \
-		TRANSPORT_FAMILY_IPV6)
+	OPT_SET_INT_F('4', "ipv4", (v), N_("use IPv4 addresses only"), \
+		TRANSPORT_FAMILY_IPV4, PARSE_OPT_NONEG), \
+	OPT_SET_INT_F('6', "ipv6", (v), N_("use IPv6 addresses only"), \
+		TRANSPORT_FAMILY_IPV6, PARSE_OPT_NONEG)
 
 #endif
diff --git c/t/t5516-fetch-push.sh w/t/t5516-fetch-push.sh
index 19ebefa5ac..87163d7745 100755
--- c/t/t5516-fetch-push.sh
+++ w/t/t5516-fetch-push.sh
@@ -120,6 +120,17 @@ test_expect_success setup '
 
 '
 
+for cmd in push fetch
+do
+	for opt in ipv4 ipv6
+	do
+		test_expect_success "reject 'git $cmd --no-$opt'" '
+			test_must_fail git $cmd --no-$opt 2>err &&
+			grep "unknown option .no-$opt" err
+		'
+	done
+done
+
 test_expect_success 'fetch without wildcard' '
 	mk_empty testrepo &&
 	(