Re: Bug report: --invert-grep and --author seems to be incompatible.
Hi,
On Wed, Jul 13, 2016 at 7:37 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 28 quoted lines
> Jehan Pagès <jehan.marmottard@gmail.com> writes:
>
>>> I think --author=someone greps the "author " field in the commit
>>> object looking for the hit with "someone", and your request asks to
>>> show commits that either do not have "something" or was not written
>>> by "someone", I would guess.
>>
>> Note that I can still see commits with "something", and I can also see
>> commits by "someone" in my results. So my request actually ask for
>> commits which have neither "something" nor are done by "someone".
>>
>> Anyway I don't think that's the expected result, hence is still a bug.
>> Am I wrong?
>
> Unlike "git grep", "git log" works with boolean expression that does
> not explicitly have a way to say "--and" and "--or", so only one
> interpretation has been chosen long time ago. All the terms are
> ORed together, and then the whole thing can be inverted with
> "--invert-grep". i.e. you are telling an equivalent of
>
> $ git grep --not \( -e "author someone" --or -e "something" \)
>
> with the command line, and there is no way to combine the requested
> match criteria (there are two, "author must be somebody" and
> "something must be in the message") differently.
>
> Given that, that is the "right" expectation, and as long as you get
> the behaviour, there is no "bug".
I see. Well it's a little counter-intuitive though, since the option is called --invert-grep. And the man indicates:
« Limit the commits output to ones with log message that do not match the pattern specified with --grep=<pattern>. »
So it gives the impression that the option is made only to invert the --grep part. Whereas in fact, you are saying it inverts any other optional selection (or at least also --author). A better naming should have been called --invert-matches, or even just --invert. And the man description should definitely be completed, IMO.
> You can call it a lack of feature, though, and patches to implement
> a more flexible combination of match criteria like "git grep" allows
> is always welcome.
Maybe I will! This would be useful to have a little more capabilities for commit selection. Thanks.
Jehan
--
ZeMarmot open animation film
http://film.zemarmot.net
Patreon: https://patreon.com/zemarmot
Tipeee: https://www.tipeee.com/zemarmot