Re: [PATCH v3 05/30] log: make --regexp-ignore-case work with --perl-regexp
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 20, 2017, 23:50 UTC
- Message-ID
- <xmqqlgprqe9j.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20170520214233.7183-6-avarab@gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 33 quoted lines
> Make the --regexp-ignore-case option work with --perl-regexp. This
> never worked, and there was no test for this. Fix the bug and add a
> test.
>
> When PCRE support was added in commit 63e7e9d8b6 ("git-grep: Learn
> PCRE", 2011-05-09) compile_pcre_regexp() would only check
> opt->ignore_case, but when the --perl-regexp option was added in
> commit 727b6fc3ed ("log --grep: accept --basic-regexp and
> --perl-regexp", 2012-10-03) the code didn't set the opt->ignore_case.
>
> Change the test suite to test for -i and --invert-regexp with
> basic/extended/perl patterns in addition to fixed, which was the only
> patternType that was tested for before in combination with those
> options.
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
> revision.c | 1 +
> t/t4202-log.sh | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
> 2 files changed, 56 insertions(+), 5 deletions(-)
>
> diff --git a/revision.c b/revision.c
> index 8a8c1789c7..4883cdd2d0 100644
> --- a/revision.c
> +++ b/revision.c
> @@ -1991,6 +1991,7 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
> } else if (!strcmp(arg, "--extended-regexp") || !strcmp(arg, "-E")) {
> revs->grep_filter.pattern_type_option = GREP_PATTERN_TYPE_ERE;
> } else if (!strcmp(arg, "--regexp-ignore-case") || !strcmp(arg, "-i")) {
> + revs->grep_filter.ignore_case = 1;
> revs->grep_filter.regflags |= REG_ICASE;
> DIFF_OPT_SET(&revs->diffopt, PICKAXE_IGNORE_CASE);
> } else if (!strcmp(arg, "--fixed-strings") || !strcmp(arg, "-F")) {Looks good.
I however wonder if it is a better approach in the longer term to treat the .ignore_case field just like .extended_regexp_option field, i.e. not committing immediately to .regflags but commit it after config and command line parsing is done, just like we make the "BRE? ERE?" decision in grep_commit_pattern_type().
Thanks.