git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v4] config: add conditional include

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jul 16, 2016, 13:30 UTC
Message-ID
<alpine.DEB.2.20.1607161507250.28832@virtualbox>
In-Reply-To
<CACsJy8AjVX1Say0srEq+ezGg=CzmbjBAt4PnuikXiqdnVC4G6g@mail.gmail.com>
Hi Duy,
On Thu, 14 Jul 2016, Duy Nguyen wrote:
Show 12 quoted lines
> On Thu, Jul 14, 2016 at 5:53 PM, Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
> > Hi Duy,
> >
> > On Thu, 14 Jul 2016, Nguyễn Thái Ngọc Duy wrote:
> >
> >> Helped-by: Jeff King <peff@peff.com>
> >> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> >
> > This commit message is quite a bit short on details.
> 
> Because it's fully documented in config.txt.

Surely there is more information left for the commit message, such as: what motivated the patch, what alternative solutions were considered, was any thought given to how this might break down, etc

Show 14 quoted lines
> > I still fail to see what use case this would benefit,
> 
> It allows you to group repos together. The first mail that started all
> this [1] is one of the use cases: you may want to use one identity in
> a group of repos, and another identity in some other. I want some
> more, to use a private key one some repos and another private key on
> some other. Some more settings may be shareable this way, like coding
> style-related (trailing spaces or not...)
> 
> [1] http://thread.gmane.org/gmane.comp.version-control.git/273811
> 
> > and I already start to suspect that the change would open a can of worms that might not be desired.
> 
> You can choose not to use it, I guess.
Sadly, as the maintainer I am unable to share in that luxury of yours.
Show 5 quoted lines
> From what I see it's nothing super tricky. The config hierarchy we have
> now is: system -> per-user -> repo. This could change this to: system ->
> per-user -> per-directory -> repo. You could create a different
> hierarchy, but with git-config now showing where a config var comes
> from, it's not hard to troubleshoot.

The more indirection you allow, the harder it gets. And that problem is exacerbated when allowing conditional includes.

Show 9 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.

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.

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.

Ciao, Dscho

Previous: Duy NguyenNext: Duy Nguyen
Message 20 of 46 in “config: add conditional include”
  1. config: add conditional includeNguyễn Thái Ngọc Duy, Jun 26, 2016
  2. Jeff KingJun 26, 2016
  3. Duy NguyenJun 27, 2016
  4. Jeff KingJun 27, 2016
  5. Duy NguyenJun 27, 2016
  6. Jeff KingJun 27, 2016
  7. 0/2 Config conditional includeNguyễn Thái Ngọc Duy, Jun 28, 2016
  8. 2/2 config: add conditional includeNguyễn Thái Ngọc Duy, Jun 28, 2016
  9. Jeff KingJun 28, 2016
  10. Duy NguyenJun 29, 2016
  11. Eric SunshineJun 28, 2016
  12. config: add conditional includeNguyễn Thái Ngọc Duy, Jul 12, 2016
  13. Matthieu MoyJul 13, 2016
  14. Jeff KingJul 13, 2016
  15. Matthieu MoyJul 13, 2016
  16. Duy NguyenJul 13, 2016
  17. config: add conditional includeNguyễn Thái Ngọc Duy, Jul 14, 2016
  18. Johannes SchindelinJul 14, 2016
  19. Duy NguyenJul 14, 2016
  20. Johannes SchindelinJul 16, 2016
  21. Duy NguyenJul 16, 2016
  22. Jeff KingJul 16, 2016
  23. Johannes SchindelinJul 16, 2016
  24. Jeff KingJul 16, 2016
  25. Johannes SchindelinJul 17, 2016
  26. Jeff KingJul 20, 2016
  27. Junio C HamanoJul 20, 2016
  28. Jakub NarębskiJul 20, 2016
  29. Duy NguyenAug 13, 2016
  30. Jeff KingAug 19, 2016
  31. Jakub NarębskiAug 20, 2016
  32. Duy NguyenAug 22, 2016
  33. Matthieu MoyAug 22, 2016
  34. Duy NguyenAug 22, 2016
  35. Matthieu MoyAug 22, 2016
  36. Duy NguyenAug 22, 2016
  37. Johannes SchindelinAug 23, 2016
  38. Duy NguyenAug 24, 2016
  39. Jakub NarębskiAug 24, 2016
  40. Jeff KingAug 24, 2016
  41. 1/2 add skip_prefix_mem helperNguyễn Thái Ngọc Duy, Jun 28, 2016
  42. Jeff KingJun 28, 2016
  43. Matthieu MoyJun 28, 2016
  44. Jeff KingJun 28, 2016
  45. Duy NguyenJun 29, 2016
  46. Junio C HamanoJun 28, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.