Re: [PATCH] grep: --full-tree
From: Jeff King <hidden>
Date: 2016-06-15 22:47:46
On Wed, Nov 25, 2009 at 11:32:44AM -0800, Junio C Hamano wrote:
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