threads / bug / 17576

[BUG] 'git log --quiet' doesn't suppress the output

Subject: [BUG] 'git log --quiet' doesn't suppress the output

## tl;dr

5 messages between Feb 5, 2009 and Feb 7, 2009.

replies: 4people: 2as markdown or json

Jeff King· Feb 6, 2009, 19:11 UTC · re: James Pickens · lore

Re: [BUG] 'git log --quiet' doesn't suppress the output

On Wed, Feb 04, 2009 at 07:19:28PM -0700, James Pickens wrote:
> The --quiet switch to 'git log' doesn't suppress the output.  It only
> does the same as --exit-code.

It suppresses the diff output (which is why it supports --quiet at all: it is a diff option). So

  git log -p --quiet
looks just like
  git log
making it largely pointless.

It would probably be trivial to for "git log" to see that the quiet switch was given and silence the commit output. But I am having trouble envisioning exactly what that would be useful for (except for being a slower version of "cat /dev/null"). Care to elaborate?

-Peff
James Pickens· Feb 7, 2009, 06:44 UTC · re: Jeff King · lore

Re: [BUG] 'git log --quiet' doesn't suppress the output

On Fri, Feb 6, 2009 at 12:11 PM, Jeff King <peff@peff.net> wrote:
> It would probably be trivial to for "git log" to see that the quiet
> switch was given and silence the commit output. But I am having trouble
> envisioning exactly what that would be useful for (except for being a
> slower version of "cat /dev/null"). Care to elaborate?

I was writing a script, and looking for a way to figure out whether there were any commits in origin/master that aren't in master (i.e., whether I need to pull before I can push), and 'git log --quiet origin/master..master' was the first thing I thought of.

James
Jeff King· Feb 7, 2009, 06:56 UTC · re: James Pickens · lore

Re: [BUG] 'git log --quiet' doesn't suppress the output

On Fri, Feb 06, 2009 at 11:44:59PM -0700, James Pickens wrote:
Show 5 quoted lines
> I was writing a script, and looking for a way to figure out
> whether there were any commits in origin/master that aren't in
> master (i.e., whether I need to pull before I can push), and 'git
> log --quiet origin/master..master' was the first thing I thought
> of.
OK, that does make sense.

In this case, though, you should be using the "git rev-list" plumbing instead of the "git log" porcelain for a script. And "git rev-list" does support "--quiet", but it doesn't quite do what you want. It silences the output, but the exit code does not depend on whether or not there were any commits in range.

So you would need a patch for rev-list to support --exit-code to mean "did we see anything?".

In the past I have accomplished something similar through:
  git rev-list origin/master..master | wc -l

and checking the result for "0" (I think you could even speed things up by using "git rev-list -1", because you only care about whether there are 0 or more than 0 commits, so parsing and writing the other N is pointless).

-Peff
James Pickens· Feb 7, 2009, 07:18 UTC · re: Jeff King · lore

Re: [BUG] 'git log --quiet' doesn't suppress the output

On Fri, Feb 6, 2009 at 11:56 PM, Jeff King <peff@peff.net> wrote:
Show 15 quoted lines
> On Fri, Feb 06, 2009 at 11:44:59PM -0700, James Pickens wrote:
>
>> I was writing a script, and looking for a way to figure out
>> whether there were any commits in origin/master that aren't in
>> master (i.e., whether I need to pull before I can push), and 'git
>> log --quiet origin/master..master' was the first thing I thought
>> of.
>
> OK, that does make sense.
>
> In this case, though, you should be using the "git rev-list" plumbing
> instead of the "git log" porcelain for a script. And "git rev-list" does
> support "--quiet", but it doesn't quite do what you want. It silences
> the output, but the exit code does not depend on whether or not there
> were any commits in range.

Thanks for the tip; I'll just use rev-list and check if it gave any output.

James

← back to recent threads