git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Martin Ågren" <martin.agren@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>
Subject: [PATCH 7/8] builtin/config: warn if "value_regex" doesn't canonicalize as boolean
Date: Wed, 13 Nov 2019 19:55:06 +0100	[thread overview]
Message-ID: <0f48ab4fc344b3cc226d0a45d13530022208ff3e.1573670565.git.martin.agren@gmail.com> (raw)
In-Reply-To: <cover.1573670565.git.martin.agren@gmail.com>

With `--type=bool`, we try to canonicalize the "value_regex". If it
doesn't canonicalize, we continue and handle the "value_regex" as an
ordinary regex. This is deliberate -- we do not want to cause existing
scripts to fail.

This does mean that users might be at risk of missing out on config
values depending on which representation they use in their config file:

	$ git config foo.bar on
	$ git config foo.baz true
	$ git config --type=bool --get-regex "foo\.*" tru
	foo.baz true
	$ # oops! missing foo.bar

Let's start warning when the "value_regex" doesn't look like a boolean.
Document our intention of eventually requiring the canonicalization to
pass.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
---
 Documentation/git-config.txt | 2 ++
 builtin/config.c             | 2 ++
 t/t1300-config.sh            | 3 ++-
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt
index 864375b1ec..43310ca3c0 100644
--- a/Documentation/git-config.txt
+++ b/Documentation/git-config.txt
@@ -46,6 +46,8 @@ unset an existing `--type` specifier with `--no-type`.
 With `--type=bool` or `--type=bool-or-int`, if `value_regex` is given
 and canonicalizes to a boolean value, it matches all entries
 that canonicalize to the same boolean value.
+The support for non-canonicalizing values of `value_regex` with
+`--type=bool` is deprecated.
 
 When reading, the values are read from the system, global and
 repository local configuration files by default, and options
diff --git a/builtin/config.c b/builtin/config.c
index 4e274d4867..2af62b95f8 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -303,6 +303,8 @@ static int handle_value_regex(const char *regex_)
 			cmd_line_value.boolean = boolval;
 			return 0;
 		}
+		warning(_("value_regex '%s' cannot be canonicalized "
+			  "to a boolean value"), regex_);
 	}
 
 	if (type == TYPE_BOOL_OR_INT) {
diff --git a/t/t1300-config.sh b/t/t1300-config.sh
index f0e9a21dc4..3e067c211d 100755
--- a/t/t1300-config.sh
+++ b/t/t1300-config.sh
@@ -466,8 +466,9 @@ test_expect_success '--get canonicalizes integer value_regex with --type=bool' '
 
 test_expect_success '--type=bool with "non-bool" value_regex' '
 	echo true >expect &&
-	git config --type=bool --get foo.y4 "t.*" >output &&
+	git config --type=bool --get foo.y4 "t.*" >output 2>err &&
 	test_cmp expect output &&
+	test_i18ngrep "cannot be canonicalized" err &&
 	test_must_fail git config --type=bool --get foo.y4 "T.*" >output &&
 	test_must_be_empty output
 '
-- 
2.24.0


  parent reply	other threads:[~2019-11-13 18:55 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-13 18:54 [PATCH 0/8] builtin/config: canonicalize "value_regex" with `--type=bool[-or-int]` Martin Ågren
2019-11-13 18:55 ` [PATCH 1/8] config: make `git_parse_maybe_bool_text()` public Martin Ågren
2019-11-13 18:55 ` [PATCH 2/8] t1300: modernize part of script Martin Ågren
2019-11-21  4:54   ` Junio C Hamano
2019-11-13 18:55 ` [PATCH 3/8] builtin/config: extract `handle_value_regex()` from `get_value()` Martin Ågren
2019-11-21  5:02   ` Junio C Hamano
2019-11-21 19:53     ` Martin Ågren
2019-11-13 18:55 ` [PATCH 4/8] builtin/config: collect "value_regexp" data in a struct Martin Ågren
2019-11-21  5:22   ` Junio C Hamano
2019-11-21 19:55     ` Martin Ågren
2019-11-22  6:30       ` Junio C Hamano
2019-11-13 18:55 ` [PATCH 5/8] builtin/config: canonicalize "value_regex" with `--type=bool` Martin Ågren
2019-11-21  5:37   ` Junio C Hamano
2019-11-13 18:55 ` [PATCH 6/8] builtin/config: canonicalize "value_regex" with `--type=bool-or-int` Martin Ågren
2019-11-13 18:55 ` Martin Ågren [this message]
2019-11-21  5:43   ` [PATCH 7/8] builtin/config: warn if "value_regex" doesn't canonicalize as boolean Junio C Hamano
2019-11-21 19:58     ` Martin Ågren
2019-11-13 18:55 ` [PATCH 8/8] builtin/config: die " Martin Ågren
2019-11-14  2:18 ` [PATCH 0/8] builtin/config: canonicalize "value_regex" with `--type=bool[-or-int]` Junio C Hamano
2019-11-14  6:40   ` Martin Ågren
2019-11-14  6:29 ` Jeff King
2019-11-14  6:54   ` Martin Ågren
2019-11-14  7:37     ` Jeff King

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=0f48ab4fc344b3cc226d0a45d13530022208ff3e.1573670565.git.martin.agren@gmail.com \
    --to=martin.agren@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /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).