threads / discuss / 31363

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

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

## tl;dr

2 messages between Aug 26, 2012 and Aug 26, 2012.

replies: 1people: 2as markdown or json

Todd A. Jacobs· Aug 26, 2012, 22:30 UTC · lore

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· Aug 26, 2012, 22:43 UTC · re: Todd A. Jacobs · lore

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

"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.

← back to recent threads