Subject: Re: [PATCH] diff-tree: do not show the sha1 of the given head with --quiet

From: Junio C Hamano <[email-masked]>
Date: Thu, 23 Jul 2015 13:43:07 -0700

Sebastian Schuberth <[email-masked]> writes:

> On Thu, Jul 23, 2015 at 9:39 PM, Junio C Hamano <[email-masked]> wrote:
>
>> I haven't dug into why that happens, but possible ways to fix that
>> are to make "--quiet" output all (making it consistent with "-s") or
>> no (making the command totally silent) output at all ;-).
>
> Exactly, and I chose the latter to add some value to --quiet instead
> of making it an alias for -s.

Heh.  You didn't even know when "diff-tree --stdin --quiet" would be
useful, let alone that it had a bug that made it useless for that
exact use case.  So it cannot be "I chose the latter".

I just gave you a hint so that you can write a plausible-sounding
justification, and we both know that it is very different from your
original motivation.

Be honest.

Perhaps the log message would say something like this:

	$ git rev-list ... | git diff-tree --stdin --quiet [$pathspec]

	is a way to list the commits that modifies the named paths,
        but this bug <<<analysis of the bug comes here>>> makes it
        not to emit all such commits.  It couldn't have been used
        by existing scripts with this longstanding bug.

	We could fix it so that it does not randomly skip commits
	that ought to be shown, but that feature is already
	available by the "-s" option instead of "--quiet".

        So let's change the meaning of "--quiet" to make it really
        quiet, without giving any output.  Strictly speaking, this
        may break backward compatibility but the existing behaviour
        to randomly omit commits couldn't have been useful, so there
        is no harm done.

	And as an added bonus,

	$ git diff-tree --quiet $commit [$pathspec]

	would stop showing the commit object name.

The analysis of the bug is really crucial for the above description
to work as justification for this change, substanciating the words
"longstanding" and "randomly omit" that are used to convince us that
this option couldn't have been used by real scripts.