Re: [PATCH] grep: --full-tree
- From
Jeff King <peff@peff.net>
- Date
- Nov 25, 2009, 20:52 UTC
- Message-ID
- <20091125205232.GB18487@coredump.intra.peff.net>
- In-Reply-To
- <7vr5rmwgbn.fsf@alter.siamese.dyndns.org>
On Wed, Nov 25, 2009 at 11:32:44AM -0800, Junio C Hamano wrote:
Show 5 quoted lines
> But if a command like "grep" that "does one small thing and do it well" > changes its behaviour drastically depending on a config variable or an > environment variable, it won't be a command that you can rely upon any > more in your scripts and hooks. It's the same insanity as GREP_OPTIONS > environment variable.
I know this is the attitude we have taken in the past, and I am worried it is part of what hurts the usability of git. Just consider for a moment: git grows some feature with a default behavior X. Time passes. Some people like behavior Y instead. How can we help the people who like Y?
1. Declare Y better than X, and default to it. This hurts people who
like X. It also hurts scripts built around X. 2. Add a config option to switch the behavior to Y. This hurts people
or scripts unexpectedly using somebody's configuration with Y. 3. Add a --Y command line option. Now the Y people have to remember to
use that option. Every single time they invoke the command. 4. Tell them to alias "git foo-y" to "git foo --Y". IMHO, this is
completely unscalable. They can't just call it "foo", so they have
to remember to invoke "foo-y" each time. And when they forget,
instead of getting an error, they get the X behavior. Furthermore,
as time goes on, they basically develop a vocabulary of git
commands that is totally unlike anybody else's, making their
scripts and git knowledge unportable to other people's setups (sort
of like in (2) above).So as a Y user, what is the impression of git that I am left with? It doesn't do what I want unless I remember an option every time, or create an arcane pseudo-porcelain interface through my set of aliases. Patches to fix the situation are blocked by compatibility issues. Y users remain frustrated indefinitely.
I know that (1) and (2) have their problems. But I think by not giving a little on those compatibility issues, we end up with an equally bad or worse outcome. In other words, I think in this case that (2) may be the lesser of many evils.
-Peff