Re: Local unset override global options
- From
- Stefan Hajnoczi <stefanha@gmail.com>
- Date
- Apr 12, 2010, 16:07 UTC
- Message-ID
- <m2jfbd9d3991004120907k66951cf0y149097153fe3229a@mail.gmail.com>
- In-Reply-To
- <7vtyrgllje.fsf@alter.siamese.dyndns.org>
On Mon, Apr 12, 2010 at 4:48 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 11 quoted lines
> Stefan Hajnoczi <stefanha@gmail.com> writes: > >> That would work but introduces a special case for smtpuser. Do you >> think users may wish to unset override other options too? > > I would indeed agree "users may _wish_ to", but that does not matter as > much as "users _need_ to, otherwise they cannot do X and Y and Z". > > You seem to think from the beginning of this thread that "empty means I > don't want it" is a hacky special case that is limited to this smtpuser > variable, but I do not share that view. Not at all.
Show 15 quoted lines
> There are two rather big reasons we would want to stick to the current > format without introducing "unset". At least we would want to try to > until we find real need that justifies such a change. > > - We could introduce a backward incompatible change to the configuration > file format to say "This variable is not set at all", but once somebody > starts using the syntax in his .git/config (or worse $HOME/.gitconfig), > that repository cannot be used by older version of git anymore. > > - Also internally our variables are never "unset". Behaviour of a > plumbing or Porcelain command implemented in C is controlled by > variables in C, and the contents of the configuration files overwrite > these variables as they are parsed from the least specific (system) to > the most specific. The best you can do is "reset to default" (not > "unset"), and even that involves fair amount of change.
Knowing that variables are never unset internally gives me a different perspective. Thanks for the explanation.
Stefan