# Inverting the --committer option to git-log with v1.7.5.4

2 messages from 2012-08-26 to 2012-08-26. Participants: Todd A. Jacobs, Junio C Hamano.
Thread: https://gitlist.dev/t/31363

## Todd A. Jacobs, 2012-08-26 22:30

Subject: Inverting the --committer option to git-log with v1.7.5.4
Message-ID: <CAPRhCbuOsiHNOHJUTN8Na9qEqoTAbCb-G41WFscjYhDppKOLGg@mail.gmail.com>
URL: https://gitlist.dev/e/CAPRhCbuOsiHNOHJUTN8Na9qEqoTAbCb-G41WFscjYhDppKOLGg%40mail.gmail.com
In-Reply-To: <CAPRhCbtfx+kA8BbPwSYcYfvg5S0b6yWP5TqJHD_LCN-CMFw75w@mail.gmail.com>

```
I wanted to search a repository for all commits that were *not*
committed by a particular person. While I eventually managed to build
a regular expression that worked for my limited use case, it seems
like there ought to be a more sensible way to find the data I'm
looking for.

As an example, this didn't work:

    git log --format=fuller --not --committer="Foo Bar"

Apparently, the --not flag doesn't invert the grep for committer; it
only inverts the revision specifiers. It seems like there should be
something that works like grep's --invert-match option, but I couldn't
find it.

On the other hand, this will work, but is painful and error-prone to
build if you have a lot of committers:

    # Assuming the address is foo.bar@example.com
    git log --format=fuller --committer='[^r]@'

Is there currently a better way to request logs for "everyone but
committer x" in Git? If not, is this a feature that someone who
understands the Git source might find useful enough to add in?

```

## Junio C Hamano, 2012-08-26 22:43

Subject: Re: Inverting the --committer option to git-log with v1.7.5.4
Message-ID: <7vr4qttgud.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vr4qttgud.fsf%40alter.siamese.dyndns.org
In-Reply-To: <CAPRhCbuOsiHNOHJUTN8Na9qEqoTAbCb-G41WFscjYhDppKOLGg@mail.gmail.com>

```
"Todd A. Jacobs" <nospam+listmail@codegnome.org> writes:

> Is there currently a better way to request logs for "everyone but
> committer x" in Git? If not, is this a feature that someone who
> understands the Git source might find useful enough to add in?

No, there is not.

I wouldn't comment on the potential usefulness of such a feature,
but I do not think there is anything fundamentally wrong to enhance
the limited form of "--grep/--author/--committer" the "log" family
of commands currently support to a full "grep boolean expressions"
that is supported by "git grep" command to let you say something
like:

	git log --author=rezrov --grep=nitfol \
        	--and \( --committer=xyzzy --or	--committer=frotz \) \
		--all --not master

to grab commits from all topics that are not yet merged to 'master',
authored by rezrov and talks about nitfol, that are committed either
by xyzzy or frotz.

The command line syntax to integrate the "grep boolean expressions"
needs to be carefully thought out, as "--not" on the "log" family of
commands is already used to mean something entirely different (it is
a revision range operator), though.

```
