From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [RFC/PATCH] grep: allow scripts to ignore configured pattern type
Date: Mon, 27 Dec 2021 00:09:05 +0100 [thread overview]
Message-ID: <211227.86czljez86.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <xmqqa6gp35a6.fsf_-_@gitster.g>
On Fri, Dec 24 2021, Junio C Hamano wrote:
> We made a mistake to add grep.extendedRegexp configuration variable
> long time ago, and made things even worse by introducing an even
> more generalized grep.patternType configuration variable.
>
> This was mostly because interactive users were lazy and wanted a way
> to declare "I do not live in the ancient age, and my regexps are
> always extended" and write "git grep" without having to type three
> more letters " -E" on the command line.
>
> But this in turn forces script writers to always specify what kind
> of patterns they are writing, because without such command line
> override, the interpretation of the patterns they write in their
> scripts will be affected by the configuration variables of the user
> who is running their script.
>
> Introduce GIT_DISABLE_GREP_PATTERN_CONFIG environment variable that
> script writers can set to "true" and export at the very beginning of
> their script to defeat grep.extendedRegexp and grep.patternType
> configuration variables.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
>
> * This is merely a weather balloon without proper documentation and
> test. It might be even better idea to make such an environment
> variable to _specify_ what kind of pattern the script uses,
> instead of "we defeat end-user configuration and now we are
> forced to write in basic or have to write -E/-P etc.", which is
> what this patch does.
You note the lack of documentation. I do think anything in this
direction would do well to:
* Specify what it is we're promising now exactly. The git-grep
command is in "main porcelain" now, this change sounds like we're
promising to make its output more plumbing-like.
* As an aside I think a good follow-up to my series would be to
just start warning() and eventually die()-ing on grep.extendedRegexp
which would make this a bit simpler.
* A "GIT_DISABLE_GREP_PATTERN_CONFIG" seems overly narrow. Just a few lines
from the code being patched here we read the grep.lineNumber config, which is
similarly annoying if you're parsing the "git grep" output, so at least a
"GIT_DISABLE_GREP_CONFIG" would be handy.
* But more generally we've had discussions on and off on-list about supporting
a generic way to disable reading the config. Supporting e.g. "git --no-config" or
a "GIT_NO_CONFIG" would be handy, even if all it did for now (and we could document
it as such) would be to change the behavior of grep.
> grep.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/grep.c b/grep.c
> index fe847a0111..0cfb698b51 100644
> --- a/grep.c
> +++ b/grep.c
> @@ -77,10 +77,15 @@ int grep_config(const char *var, const char *value, void *cb)
> {
> struct grep_opt *opt = &grep_defaults;
> const char *slot;
> + static int disable_pattern_type_config = -1;
>
> if (userdiff_config(var, value) < 0)
> return -1;
>
> + if (disable_pattern_type_config < 0)
> + disable_pattern_type_config =
> + git_env_bool("GIT_DISABLE_GREP_PATTERN_CONFIG", 0);
> +
> /*
> * The instance of grep_opt that we set up here is copied by
> * grep_init() to be used by each individual invocation.
> @@ -90,12 +95,14 @@ int grep_config(const char *var, const char *value, void *cb)
> */
>
> if (!strcmp(var, "grep.extendedregexp")) {
> - opt->extended_regexp_option = git_config_bool(var, value);
> + if (!disable_pattern_type_config)
> + opt->extended_regexp_option = git_config_bool(var, value);
> return 0;
> }
>
> if (!strcmp(var, "grep.patterntype")) {
> - opt->pattern_type_option = parse_pattern_type_arg(var, value);
> + if (!disable_pattern_type_config)
> + opt->pattern_type_option = parse_pattern_type_arg(var, value);
> return 0;
> }
next prev parent reply other threads:[~2021-12-26 23:13 UTC|newest]
Thread overview: 151+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-06 21:10 [PATCH 0/8] grep: simplify & delete code by changing obscure cfg variable behavior Ævar Arnfjörð Bjarmason
2021-11-06 21:10 ` [PATCH 1/8] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2021-11-06 21:10 ` [PATCH 2/8] git.c & grep.c: assert that "prefix" is NULL or non-zero string Ævar Arnfjörð Bjarmason
2021-11-08 20:37 ` Taylor Blau
2021-11-06 21:10 ` [PATCH 3/8] grep: remove unused "prefix_length" member Ævar Arnfjörð Bjarmason
2021-11-08 20:42 ` Taylor Blau
2021-11-06 21:10 ` [PATCH 4/8] grep.c: move "prefix" out of "struct grep_opt" Ævar Arnfjörð Bjarmason
2021-11-08 20:56 ` Taylor Blau
2021-11-09 2:10 ` Ævar Arnfjörð Bjarmason
2021-11-10 0:18 ` Taylor Blau
2021-11-06 21:10 ` [PATCH 5/8] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2021-11-06 21:10 ` [PATCH 6/8] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2021-11-08 21:49 ` Taylor Blau
2021-11-09 2:06 ` Ævar Arnfjörð Bjarmason
2021-11-10 0:18 ` Taylor Blau
2021-11-06 21:10 ` [PATCH 7/8] grep: simplify config parsing, change grep.<rx config> interaction Ævar Arnfjörð Bjarmason
2021-11-08 23:04 ` Taylor Blau
2021-11-09 2:01 ` Ævar Arnfjörð Bjarmason
2021-11-10 0:16 ` Taylor Blau
2021-11-06 21:10 ` [PATCH 8/8] grep: make "extendedRegexp=true" the same as "patternType=extended" Ævar Arnfjörð Bjarmason
2021-11-10 1:43 ` [PATCH v2 0/8] grep: simplify & delete code by changing obscure cfg variable behavior Ævar Arnfjörð Bjarmason
2021-11-10 1:43 ` [PATCH v2 1/8] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2021-11-12 16:11 ` Junio C Hamano
2021-11-10 1:43 ` [PATCH v2 2/8] built-ins: trust the "prefix" from run_builtin() Ævar Arnfjörð Bjarmason
2021-11-12 16:38 ` Junio C Hamano
2021-11-10 1:43 ` [PATCH v2 3/8] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2021-11-12 17:09 ` Junio C Hamano
2021-11-10 1:43 ` [PATCH v2 4/8] grep docs: de-duplicate configuration sections Ævar Arnfjörð Bjarmason
2021-11-12 17:15 ` Junio C Hamano
2021-11-10 1:43 ` [PATCH v2 5/8] grep.c: don't pass along NULL callback value Ævar Arnfjörð Bjarmason
2021-11-12 17:18 ` Junio C Hamano
2021-11-10 1:43 ` [PATCH v2 6/8] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2021-11-12 17:32 ` Junio C Hamano
2021-11-10 1:43 ` [PATCH v2 7/8] grep: simplify config parsing, change grep.<rx config> interaction Ævar Arnfjörð Bjarmason
2021-11-12 19:19 ` Junio C Hamano
2021-11-13 9:55 ` Ævar Arnfjörð Bjarmason
2021-11-10 1:43 ` [PATCH v2 8/8] grep: make "extendedRegexp=true" the same as "patternType=extended" Ævar Arnfjörð Bjarmason
2021-11-12 19:32 ` Junio C Hamano
2021-11-10 2:23 ` [PATCH v2 0/8] grep: simplify & delete code by changing obscure cfg variable behavior Taylor Blau
2021-11-29 14:50 ` [PATCH v3 0/7] grep: simplify & delete "init" & "config" code Ævar Arnfjörð Bjarmason
2021-11-29 14:50 ` [PATCH v3 1/7] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2021-11-29 14:50 ` [PATCH v3 2/7] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2022-03-04 8:57 ` Tests in t4202 are aborted early, was: Re: [PATCH v3 2/7] log Fabian Stelzer
2022-03-04 10:05 ` [PATCH] log tests: fix "abort tests early" regression in ff37a60c369 Ævar Arnfjörð Bjarmason
2021-11-29 14:50 ` [PATCH v3 3/7] grep tests: add missing "grep.patternType" config test Ævar Arnfjörð Bjarmason
2021-11-29 21:52 ` Junio C Hamano
2021-12-03 0:48 ` Junio C Hamano
2021-11-29 14:50 ` [PATCH v3 4/7] built-ins: trust the "prefix" from run_builtin() Ævar Arnfjörð Bjarmason
2021-11-29 14:50 ` [PATCH v3 5/7] grep.c: don't pass along NULL callback value Ævar Arnfjörð Bjarmason
2021-11-29 14:50 ` [PATCH v3 6/7] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2021-11-29 14:50 ` [PATCH v3 7/7] grep: simplify config parsing and option parsing Ævar Arnfjörð Bjarmason
2021-11-29 21:06 ` [PATCH v3 0/7] grep: simplify & delete "init" & "config" code Junio C Hamano
2021-11-29 21:36 ` Junio C Hamano
2021-12-03 10:19 ` [PATCH v4 " Ævar Arnfjörð Bjarmason
2021-12-03 10:19 ` [PATCH v4 1/7] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2021-12-03 10:19 ` [PATCH v4 2/7] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2021-12-03 10:19 ` [PATCH v4 3/7] grep tests: add missing "grep.patternType" config test Ævar Arnfjörð Bjarmason
2021-12-03 10:19 ` [PATCH v4 4/7] built-ins: trust the "prefix" from run_builtin() Ævar Arnfjörð Bjarmason
2021-12-03 10:19 ` [PATCH v4 5/7] grep.c: don't pass along NULL callback value Ævar Arnfjörð Bjarmason
2021-12-03 10:19 ` [PATCH v4 6/7] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2021-12-03 10:19 ` [PATCH v4 7/7] grep: simplify config parsing and option parsing Ævar Arnfjörð Bjarmason
2021-12-22 2:58 ` [PATCH v5 0/7] grep: simplify & delete "init" & "config" code Ævar Arnfjörð Bjarmason
2021-12-22 2:58 ` [PATCH v5 1/7] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2021-12-22 2:58 ` [PATCH v5 2/7] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2021-12-22 2:58 ` [PATCH v5 3/7] grep tests: add missing "grep.patternType" config test Ævar Arnfjörð Bjarmason
2021-12-23 22:25 ` Junio C Hamano
2021-12-25 0:06 ` Re* " Junio C Hamano
2021-12-25 0:19 ` [RFC/PATCH] grep: allow scripts to ignore configured pattern type Junio C Hamano
2021-12-26 23:09 ` Ævar Arnfjörð Bjarmason [this message]
2021-12-25 1:04 ` Re* [PATCH v5 3/7] grep tests: add missing "grep.patternType" config test Junio C Hamano
2021-12-22 2:58 ` [PATCH v5 4/7] built-ins: trust the "prefix" from run_builtin() Ævar Arnfjörð Bjarmason
2021-12-22 2:58 ` [PATCH v5 5/7] grep.c: don't pass along NULL callback value Ævar Arnfjörð Bjarmason
2021-12-22 2:58 ` [PATCH v5 6/7] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2021-12-22 2:58 ` [PATCH v5 7/7] grep: simplify config parsing and option parsing Ævar Arnfjörð Bjarmason
2021-12-23 22:37 ` Junio C Hamano
2021-12-23 0:30 ` [PATCH v5 0/7] grep: simplify & delete "init" & "config" code Junio C Hamano
2021-12-26 22:37 ` [PATCH v6 " Ævar Arnfjörð Bjarmason
2021-12-26 22:37 ` [PATCH v6 1/7] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2021-12-26 22:37 ` [PATCH v6 2/7] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2021-12-26 22:37 ` [PATCH v6 3/7] grep tests: add missing "grep.patternType" config tests Ævar Arnfjörð Bjarmason
2021-12-26 22:37 ` [PATCH v6 4/7] built-ins: trust the "prefix" from run_builtin() Ævar Arnfjörð Bjarmason
2021-12-26 22:37 ` [PATCH v6 5/7] grep.c: don't pass along NULL callback value Ævar Arnfjörð Bjarmason
2021-12-26 22:37 ` [PATCH v6 6/7] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2021-12-26 22:37 ` [PATCH v6 7/7] grep: simplify config parsing and option parsing Ævar Arnfjörð Bjarmason
2021-12-27 6:06 ` Junio C Hamano
2021-12-27 18:51 ` Junio C Hamano
2021-12-28 1:07 ` [PATCH v7 00/10] grep: simplify & delete "init" & "config" code Ævar Arnfjörð Bjarmason
2021-12-28 1:07 ` [PATCH v7 01/10] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2021-12-28 1:07 ` [PATCH v7 02/10] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2021-12-28 1:07 ` [PATCH v7 03/10] grep tests: add missing "grep.patternType" config tests Ævar Arnfjörð Bjarmason
2021-12-28 1:07 ` [PATCH v7 04/10] built-ins: trust the "prefix" from run_builtin() Ævar Arnfjörð Bjarmason
2021-12-28 1:07 ` [PATCH v7 05/10] grep.c: don't pass along NULL callback value Ævar Arnfjörð Bjarmason
2021-12-28 1:07 ` [PATCH v7 06/10] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2021-12-28 1:07 ` [PATCH v7 07/10] grep.h: make "grep_opt.pattern_type_option" use its enum Ævar Arnfjörð Bjarmason
2021-12-28 1:07 ` [PATCH v7 08/10] grep.c: do "if (bool && memchr())" not "if (memchr() && bool)" Ævar Arnfjörð Bjarmason
2021-12-28 1:07 ` [PATCH v7 09/10] grep: simplify config parsing and option parsing Ævar Arnfjörð Bjarmason
2021-12-28 1:07 ` [PATCH v7 10/10] grep.[ch]: remove GREP_PATTERN_TYPE_UNSPECIFIED Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 00/10] grep: simplify & delete "init" & "config" code Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 01/10] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 02/10] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 03/10] grep tests: add missing "grep.patternType" config tests Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 04/10] built-ins: trust the "prefix" from run_builtin() Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 05/10] grep.c: don't pass along NULL callback value Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 06/10] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 07/10] grep.h: make "grep_opt.pattern_type_option" use its enum Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 08/10] grep.c: do "if (bool && memchr())" not "if (memchr() && bool)" Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 09/10] grep: simplify config parsing and option parsing Ævar Arnfjörð Bjarmason
2022-01-18 22:50 ` Junio C Hamano
2022-01-18 22:55 ` Junio C Hamano
2022-01-19 0:17 ` Ævar Arnfjörð Bjarmason
2022-01-19 1:09 ` Junio C Hamano
2022-01-19 1:15 ` Ævar Arnfjörð Bjarmason
2022-01-18 15:55 ` [PATCH v8 10/10] grep.[ch]: remove GREP_PATTERN_TYPE_UNSPECIFIED Ævar Arnfjörð Bjarmason
2022-01-27 11:56 ` [PATCH v9 0/9] grep: simplify & delete "init" & "config" code Ævar Arnfjörð Bjarmason
2022-01-27 11:56 ` [PATCH v9 1/9] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2022-01-27 11:56 ` [PATCH v9 2/9] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2022-01-27 11:56 ` [PATCH v9 3/9] grep tests: add missing "grep.patternType" config tests Ævar Arnfjörð Bjarmason
2022-01-27 11:56 ` [PATCH v9 4/9] built-ins: trust the "prefix" from run_builtin() Ævar Arnfjörð Bjarmason
2022-01-27 11:56 ` [PATCH v9 5/9] grep.c: don't pass along NULL callback value Ævar Arnfjörð Bjarmason
2022-01-27 11:56 ` [PATCH v9 6/9] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2022-01-27 11:56 ` [PATCH v9 7/9] grep.h: make "grep_opt.pattern_type_option" use its enum Ævar Arnfjörð Bjarmason
2022-01-27 11:56 ` [PATCH v9 8/9] grep.c: do "if (bool && memchr())" not "if (memchr() && bool)" Ævar Arnfjörð Bjarmason
2022-01-27 11:56 ` [PATCH v9 9/9] grep: simplify config parsing and option parsing Ævar Arnfjörð Bjarmason
2022-01-27 20:30 ` Junio C Hamano
2022-01-27 21:35 ` Junio C Hamano
2022-01-27 21:39 ` Junio C Hamano
2022-02-04 21:20 ` [PATCH v10 0/9] grep: simplify & delete "init" & "config" code Ævar Arnfjörð Bjarmason
2022-02-04 21:20 ` [PATCH v10 1/9] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2022-02-04 21:20 ` [PATCH v10 2/9] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2022-02-04 21:20 ` [PATCH v10 3/9] grep tests: add missing "grep.patternType" config tests Ævar Arnfjörð Bjarmason
2022-02-04 23:03 ` Junio C Hamano
2022-02-04 23:24 ` Junio C Hamano
2022-02-04 21:20 ` [PATCH v10 4/9] built-ins: trust the "prefix" from run_builtin() Ævar Arnfjörð Bjarmason
2022-02-04 21:20 ` [PATCH v10 5/9] grep.c: don't pass along NULL callback value Ævar Arnfjörð Bjarmason
2022-02-04 21:20 ` [PATCH v10 6/9] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2022-02-04 21:20 ` [PATCH v10 7/9] grep.h: make "grep_opt.pattern_type_option" use its enum Ævar Arnfjörð Bjarmason
2022-02-04 21:20 ` [PATCH v10 8/9] grep.c: do "if (bool && memchr())" not "if (memchr() && bool)" Ævar Arnfjörð Bjarmason
2022-02-04 21:20 ` [PATCH v10 9/9] grep: simplify config parsing and option parsing Ævar Arnfjörð Bjarmason
2022-02-04 23:41 ` Junio C Hamano
2022-02-16 0:00 ` [PATCH v11 00/10] grep: simplify & delete "init" & "config" code Ævar Arnfjörð Bjarmason
2022-02-16 0:00 ` [PATCH v11 01/10] grep.h: remove unused "regex_t regexp" from grep_opt Ævar Arnfjörð Bjarmason
2022-02-16 0:00 ` [PATCH v11 02/10] log tests: check if grep_config() is called by "log"-like cmds Ævar Arnfjörð Bjarmason
2022-02-16 0:00 ` [PATCH v11 03/10] grep tests: create a helper function for "BRE" or "ERE" Ævar Arnfjörð Bjarmason
2022-02-16 0:00 ` [PATCH v11 04/10] grep tests: add missing "grep.patternType" config tests Ævar Arnfjörð Bjarmason
2022-02-16 0:00 ` [PATCH v11 05/10] built-ins: trust the "prefix" from run_builtin() Ævar Arnfjörð Bjarmason
2022-02-16 0:00 ` [PATCH v11 06/10] grep.c: don't pass along NULL callback value Ævar Arnfjörð Bjarmason
2022-02-16 0:00 ` [PATCH v11 07/10] grep API: call grep_config() after grep_init() Ævar Arnfjörð Bjarmason
2022-02-16 0:00 ` [PATCH v11 08/10] grep.h: make "grep_opt.pattern_type_option" use its enum Ævar Arnfjörð Bjarmason
2022-02-16 0:00 ` [PATCH v11 09/10] grep.c: do "if (bool && memchr())" not "if (memchr() && bool)" Ævar Arnfjörð Bjarmason
2022-02-16 0:00 ` [PATCH v11 10/10] grep: simplify config parsing and option parsing Ævar Arnfjörð Bjarmason
2022-02-16 2:20 ` [PATCH v11 00/10] grep: simplify & delete "init" & "config" code Junio C Hamano
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=211227.86czljez86.gmgdl@evledraar.gmail.com \
--to=avarab@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).