diff options
author | Jeff King <peff@peff.net> | 2016-05-18 18:41:08 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-05-24 13:21:59 -0700 |
commit | 3258258f51f45efeff5ce0e9f825f347a1404efa (patch) | |
tree | 3b8a2d7e7dcf286d98fa903f13565ca7510fc17f /t/t4018/README | |
parent | git_config_parse_parameter: refactor cleanup code (diff) | |
download | tgif-3258258f51f45efeff5ce0e9f825f347a1404efa.tar.xz |
config: set up config_source for command-line config
When we parse a config file, we set up the global "cf"
variable as a pointer to a "struct config_source" describing
the file we are parsing. This is used for error messages, as
well as for lookup functions like current_config_name().
The "cf" variable is NULL in two cases:
1. When we are parsing command-line config, in which case
there is no source file.
2. When we are not parsing any config at all.
Callers like current_config_name() must assume we are in
case 1 if they see a NULL "cf". However, this means that if
they are accidentally used outside of a config parsing
callback, they will quietly return a bogus answer.
This might seem like an unlikely accident (why would you ask
for the current config file if you are not parsing config?),
but it's actually an easy mistake to make due to the
configset caching. git_config() serves the answers from a
configset cache, and any calls to current_config_name() will
claim that we are parsing command-line config, no matter
what the original source.
So let's distinguish these cases by having the command-line
config parser set up a config_source with a NULL name (which
callers already handle properly). We can use this to catch
programming errors in some cases, and to give better
messages to the user in others.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t4018/README')
0 files changed, 0 insertions, 0 deletions