Re: [PATCH v4] config: add conditional include
- From
Jeff King <peff@peff.net>
- Date
- Jul 16, 2016, 15:08 UTC
- Message-ID
- <20160716150835.GA24374@sigill.intra.peff.net>
- In-Reply-To
- <alpine.DEB.2.20.1607161507250.28832@virtualbox>
On Sat, Jul 16, 2016 at 03:30:45PM +0200, Johannes Schindelin wrote:
Show 11 quoted lines
> > >> + ; include if $GIT_DIR is /path/to/foo/.git > > >> + [include "gitdir:/path/to/foo/.git"] > > >> + path = /path/to/foo.inc > > > > > > I find this way to specify a conditional unintuitive. Reading > > > "gitdir:/path/to/foo/.git" suggests to me that the Git dir is *re-set*, > > > not that this is a condition. > > > > Well.. to me it's no different than [remote "foo"] to apply stuff to "foo". > > Except that "include" is an imperative and "remote" is not.
In the very original version of config includes, I had planned out:
[include-if "...some condition..."] path = ...
Later, since "[include ...]" had no other meaning, I think it got shortened in discussion. But it would be easy to accept include-if (or even accept either, for maximum confusion :) ).
> Quite frankly, this conditional business scares me. If you introduce it > for [include], users will want it for every config setting. And the > current syntax is just not up to, say, making user.name conditional on > anything.
They already have it for every config setting with this. The reason to add it to [include] and not as a general syntax is that you can put user.name into your included file, and then conditionally include it.
That is not as nice as "if this then that" in a single file, but it is backwards compatible with the existing syntax, and is probably fine in practice. Each included file becomes a "profile" of multiple settings that you apply.
Show 6 quoted lines
> As an alternative solution to your problem, you could of course avoid all > conditional includes. Simply by adding the include.path settings > explicitly to the configs that require them. Now, that would make reasoning > and trouble-shooting simple, wouldn't it? > > And the most beautiful aspect of it: no patch needed.
And you can just "cat" the included files directly into your .git/config. We don't even need include.path. Or ~/.gitconfig, for that matter. But sometimes dynamic things are convenient.
-Peff