[PATCH 4/3] parse-options: disallow --no-no-sth
- From
René Scharfe <rene.scharfe@lsrfire.ath.cx>
- Date
- Feb 28, 2012, 20:12 UTC
- Message-ID
- <4F4D3545.6060704@lsrfire.ath.cx>
- In-Reply-To
- <7vzkc457g3.fsf@alter.siamese.dyndns.org>
Now that options whose definition starts with "no-" can be negated by removing said "no-", there is no need anymore to allow them to be negated by adding a second "no-", which just looks silly.
The following thirteen options are affected:
apply --no-add bisect--helper --no-checkout checkout-index --no-create clone --no-checkout --no-hardlinks commit --no-verify --no-post-rewrite format-patch --no-binary hash-object --no-filters read-tree --no-sparse-checkout revert --no-commit show-branch --no-name update-ref --no-deref
E.g., with this patch --no-add and --add (its reverse) are still accepted by git apply, but --no-no-add isn't anymore.
Suggested-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> --- parse-options.c | 3 +++ t/t0040-parse-options.sh | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/parse-options.c b/parse-options.c index 1908996..dc59bba 100644 --- a/parse-options.c +++ b/parse-options.c @@ -248,6 +248,9 @@ is_abbreviated: } continue; } + /* double negation? */ + if (!prefixcmp(long_name, "no-")) + continue; flags |= OPT_UNSET; rest = skip_prefix(arg + 3, long_name); /* abbreviated and negated? */ diff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh index a44bcb9..b124f3c 100755 --- a/t/t0040-parse-options.sh +++ b/t/t0040-parse-options.sh @@ -101,11 +101,11 @@ test_expect_success 'OPT_BOOL() #5' 'check boolean: 1 -B' test_expect_success 'OPT_BOOL() is idempotent #1' 'check boolean: 1 --yes --yes' test_expect_success 'OPT_BOOL() is idempotent #2' 'check boolean: 1 -DB' -test_expect_success 'OPT_BOOL() negation #1' 'check boolean: 0 -D --no-yes' -test_expect_success 'OPT_BOOL() negation #2' 'check boolean: 0 -D --no-no-doubt' +test_expect_success 'OPT_BOOL() negation' 'check boolean: 0 -D --no-yes' test_expect_success 'OPT_BOOL() no negation #1' 'check_unknown --fear' test_expect_success 'OPT_BOOL() no negation #2' 'check_unknown --no-no-fear' +test_expect_success 'OPT_BOOL() no negation #3' 'check_unknown --no-no-doubt' test_expect_success 'OPT_BOOL() positivation' 'check boolean: 0 -D --doubt'
-- 1.7.9.2