* gitconfig includes @ 2016-11-29 19:40 Eli Barzilay 2016-11-29 19:46 ` Junio C Hamano 0 siblings, 1 reply; 8+ messages in thread From: Eli Barzilay @ 2016-11-29 19:40 UTC (permalink / raw) To: git I just noticed something weird: if I have this in my ~/.gitconfig: [x] x = global [include] path = .gitconfig.more and .gitconfig.more has [x] x = more then I get: 1. git config x.x => more 2. git config --global x.x => global 3. git config --global --includes x.x => more The first works as I expected. The second surprised me, since I took "--global" to mean "the global file and stuff it includes" (that's my understanding of the description of `include`). The third is fine, but it made me even more surprised at the second, especially since the man blurb on --includes says "Defaults to on."... So this is at least a documentation issue, though I hope that #2 is a bug and that it *should* return "more"...? -- ((x=>x(x))(x=>x(x))) Eli Barzilay: http://barzilay.org/ Maze is Life! ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: gitconfig includes 2016-11-29 19:40 gitconfig includes Eli Barzilay @ 2016-11-29 19:46 ` Junio C Hamano 2016-11-29 19:53 ` Eli Barzilay 0 siblings, 1 reply; 8+ messages in thread From: Junio C Hamano @ 2016-11-29 19:46 UTC (permalink / raw) To: Eli Barzilay; +Cc: git Eli Barzilay <eli@barzilay.org> writes: > So this is at least a documentation issue,... This already is documented, and I think it is clear enough. --[no-]includes Respect include.* directives in config files when looking up values. Defaults to off when a specific file is given (e.g., using --file, --global, etc) and on when searching all config files. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: gitconfig includes 2016-11-29 19:46 ` Junio C Hamano @ 2016-11-29 19:53 ` Eli Barzilay 2016-11-29 21:46 ` Jeff King 0 siblings, 1 reply; 8+ messages in thread From: Eli Barzilay @ 2016-11-29 19:53 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On Tue, Nov 29, 2016 at 2:46 PM, Junio C Hamano <gitster@pobox.com> wrote: > Eli Barzilay <eli@barzilay.org> writes: > >> So this is at least a documentation issue,... > > This already is documented, and I think it is clear enough. > > --[no-]includes > Respect include.* directives in config files when > looking up values. Defaults to off when a specific > file is given (e.g., using --file, --global, etc) > and on when searching all config files. Yeah, that's clear, sorry for not checking the latest. [I'd expect/wish it to be on by default though... Any reason for the default being off in these cases?] -- ((x=>x(x))(x=>x(x))) Eli Barzilay: http://barzilay.org/ Maze is Life! ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: gitconfig includes 2016-11-29 19:53 ` Eli Barzilay @ 2016-11-29 21:46 ` Jeff King 2016-11-29 21:50 ` Junio C Hamano 0 siblings, 1 reply; 8+ messages in thread From: Jeff King @ 2016-11-29 21:46 UTC (permalink / raw) To: Eli Barzilay; +Cc: Junio C Hamano, git On Tue, Nov 29, 2016 at 02:53:08PM -0500, Eli Barzilay wrote: > > This already is documented, and I think it is clear enough. > > > > --[no-]includes > > Respect include.* directives in config files when > > looking up values. Defaults to off when a specific > > file is given (e.g., using --file, --global, etc) > > and on when searching all config files. > > Yeah, that's clear, sorry for not checking the latest. > > [I'd expect/wish it to be on by default though... Any reason for the > default being off in these cases?] It definitely needs to default to off for "-f", as we would not want surprises when accessing files like ".gitmodules" that come from untrusted sources. I think it's arguable whether "--global" should behave the same. It makes the rule simple: "if you specify a single file, includes default to off". But I don't think there would be any particular harm. The existing default was mostly chosen for simplicity and least-surprise with respect to backwards compatibility. There's a little more discussion in 9b25a0b52 (config: add include directive, 2012-02-06). -Peff ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: gitconfig includes 2016-11-29 21:46 ` Jeff King @ 2016-11-29 21:50 ` Junio C Hamano 2016-11-30 18:54 ` Eli Barzilay 0 siblings, 1 reply; 8+ messages in thread From: Junio C Hamano @ 2016-11-29 21:50 UTC (permalink / raw) To: Jeff King; +Cc: Eli Barzilay, git Jeff King <peff@peff.net> writes: > I think it's arguable whether "--global" should behave the same. I know you know this and I am writing this message for others. I admit that I wondered if "a single file" ought to cover these short-hand notations like --global and --local while re-reading the log message of 9b25a0b52 (config: add include directive, 2012-02-06). In other words, I agree that it used to be arguable before we released v1.7.10. It no longer is arguable simply due to backward compatibilty. The ship has long sailed. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: gitconfig includes 2016-11-29 21:50 ` Junio C Hamano @ 2016-11-30 18:54 ` Eli Barzilay 2016-11-30 19:06 ` Jeff King 0 siblings, 1 reply; 8+ messages in thread From: Eli Barzilay @ 2016-11-30 18:54 UTC (permalink / raw) To: Junio C Hamano; +Cc: Jeff King, git On Tue, Nov 29, 2016 at 4:50 PM, Junio C Hamano <gitster@pobox.com> wrote: > Jeff King <peff@peff.net> writes: > >> I think it's arguable whether "--global" should behave the same. > > I know you know this and I am writing this message for others. > > I admit that I wondered if "a single file" ought to cover these > short-hand notations like --global and --local while re-reading the > log message of 9b25a0b52 (config: add include directive, > 2012-02-06). In other words, I agree that it used to be arguable > before we released v1.7.10. > > It no longer is arguable simply due to backward compatibilty. The > ship has long sailed. I don't have any strong opinion, but FWIW, the use case I have for this is as follows: I sync my ~/.gitconfig between my own machine and a work machine. On the work machine though, I like people to have work emails, and I wrote some scripts that verify that. For my case, I added an include of a ~/.gitconfig.more which is not synced, and has values that override the ones in ~/.gitconfig. Since I'm the one who also wrote that script, I just added an "--includes" to the check so it won't barf on my setup, but had it not been my script I'd be stuck. This is all a "FWIW" -- in case anyone thinks about use cases for a possible (future) change of the default. -- ((x=>x(x))(x=>x(x))) Eli Barzilay: http://barzilay.org/ Maze is Life! ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: gitconfig includes 2016-11-30 18:54 ` Eli Barzilay @ 2016-11-30 19:06 ` Jeff King 2016-11-30 19:42 ` Eli Barzilay 0 siblings, 1 reply; 8+ messages in thread From: Jeff King @ 2016-11-30 19:06 UTC (permalink / raw) To: Eli Barzilay; +Cc: Junio C Hamano, git On Wed, Nov 30, 2016 at 01:54:35PM -0500, Eli Barzilay wrote: > I don't have any strong opinion, but FWIW, the use case I have for this > is as follows: I sync my ~/.gitconfig between my own machine and a work > machine. On the work machine though, I like people to have work emails, > and I wrote some scripts that verify that. For my case, I added an > include of a ~/.gitconfig.more which is not synced, and has values that > override the ones in ~/.gitconfig. Since I'm the one who also wrote > that script, I just added an "--includes" to the check so it won't barf > on my setup, but had it not been my script I'd be stuck. I'm not sure what your script does exactly, but in general I think the right thing for most scripts is _not_ to use a specific-file option like --global. If the script is looking up a config value on behalf of a user, it probably makes sense for it to use the normal config lookup procedure (system, global, repo, command-line), which also enables includes by default. That would make it consistent with internal git config lookups (e.g., user.name probably only ever appears in global config, but you _can_ override it at the repo level if you want to). I know that's mostly orthogonal to what we're discussing, but I'd feel more convinced that enabling "--includes" with "--global" is useful if I thought that "--global" was useful in the first place outside of a few narrow debugging cases. -Peff ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: gitconfig includes 2016-11-30 19:06 ` Jeff King @ 2016-11-30 19:42 ` Eli Barzilay 0 siblings, 0 replies; 8+ messages in thread From: Eli Barzilay @ 2016-11-30 19:42 UTC (permalink / raw) To: Jeff King; +Cc: Junio C Hamano, git On Wed, Nov 30, 2016 at 2:06 PM, Jeff King <peff@peff.net> wrote: > > I'm not sure what your script does exactly, but in general I think the > right thing for most scripts is _not_ to use a specific-file option > like --global. > > If the script is looking up a config value on behalf of a user, it > probably makes sense for it to use the normal config lookup procedure > (system, global, repo, command-line), which also enables includes by > default. That would make it consistent with internal git config > lookups (e.g., user.name probably only ever appears in global config, > but you _can_ override it at the repo level if you want to). This is intended for git newbies (and big company => infinite supply of them), and also allows them to conveniently nuke the repo and start from a fresh copy, so it makes sense to make the script inspect/tweak the global settings. If knowing git "well enough" was an assumed requirement, I'd definitely do the normal thing. > I know that's mostly orthogonal to what we're discussing, but I'd feel > more convinced that enabling "--includes" with "--global" is useful if > I thought that "--global" was useful in the first place outside of a > few narrow debugging cases. Ok. Perhaps I overestimated the utility of --global anyway, given the above... -- ((x=>x(x))(x=>x(x))) Eli Barzilay: http://barzilay.org/ Maze is Life! ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-11-30 19:45 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-11-29 19:40 gitconfig includes Eli Barzilay 2016-11-29 19:46 ` Junio C Hamano 2016-11-29 19:53 ` Eli Barzilay 2016-11-29 21:46 ` Jeff King 2016-11-29 21:50 ` Junio C Hamano 2016-11-30 18:54 ` Eli Barzilay 2016-11-30 19:06 ` Jeff King 2016-11-30 19:42 ` Eli Barzilay
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).