Re: [PATCH 1/4] config: add include directive
- From
Jeff King <peff@peff.net>
- Date
- Jan 26, 2012, 22:43 UTC
- Message-ID
- <20120126224350.GA13241@sigill.intra.peff.net>
- In-Reply-To
- <20120126222532.GA12855@sigill.intra.peff.net>
On Thu, Jan 26, 2012 at 05:25:32PM -0500, Jeff King wrote:
Show 13 quoted lines
> There's a slight complication with when to clear the "I have seen this" > mark for each source. If you are interested only in breaking cycles, > then obviously you can just clear the marks as you pop the stack. But if > you want to stop repeated inclusion down different branches of the > include tree, you need to keep the marks until you're done (e.g., the > same file referenced by .git/config and ~/.gitconfig). But you do still > need to clear them, because we repeatedly call git_config with different > callback functions, and we need to re-parse each time. > > I think it should be sufficient to make the marks live through > git_config(), and get cleared after that (so all of .git/config, > ~/.gitconfig, and /etc/gitconfig will only load a given include once, > but another call to git_config will load it again).
Ugh, actually it's a little trickier. Because a git_config callback can call git_config again, we want one set of marks per git_config invocation, but we need to handle two simultaneous invocations. But I think it's OK. We can stuff the data into the "git_config_include_data", which has the proper scope.
-Peff