Message ID | f61985375c5096b863dc99ef613d864bfd010d96.1581294660.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | config: allow user to know scope of config options | expand |
"Matthew Rogers via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: Matthew Rogers <mattr94@gmail.com> > > do_git_config_sequence operated under the assumption that it was correct > to set current_parsing_scope to CONFIG_SCOPE_UNKNOWN as part of the > cleanup it does after it finishes execution. This is incorrect, as it > blows away the current_parsing_scope if do_git_config_sequence is called > recursively. As such situations are rare (git config running with the > '--blob' option is one example) this has yet to cause a problem, but the > upcoming '--show-scope' option will experience issues in that case, lets > teach do_git_config_sequence to preserve the current_parsing_scope from > before it started execution. > > Signed-off-by: Matthew Rogers <mattr94@gmail.com> > --- > config.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) This step is new and it does make sense. Thanks. > diff --git a/config.c b/config.c > index fe1e44a43a..0e2c693e78 100644 > --- a/config.c > +++ b/config.c > @@ -1702,6 +1702,7 @@ static int do_git_config_sequence(const struct config_options *opts, > char *xdg_config = xdg_config_home("config"); > char *user_config = expand_user_path("~/.gitconfig", 0); > char *repo_config; > + enum config_scope prev_parsing_scope = current_parsing_scope; > > if (opts->commondir) > repo_config = mkpathdup("%s/config", opts->commondir); > @@ -1741,7 +1742,7 @@ static int do_git_config_sequence(const struct config_options *opts, > if (!opts->ignore_cmdline && git_config_from_parameters(fn, data) < 0) > die(_("unable to parse command-line config")); > > - current_parsing_scope = CONFIG_SCOPE_UNKNOWN; > + current_parsing_scope = prev_parsing_scope; > free(xdg_config); > free(user_config); > free(repo_config);
diff --git a/config.c b/config.c index fe1e44a43a..0e2c693e78 100644 --- a/config.c +++ b/config.c @@ -1702,6 +1702,7 @@ static int do_git_config_sequence(const struct config_options *opts, char *xdg_config = xdg_config_home("config"); char *user_config = expand_user_path("~/.gitconfig", 0); char *repo_config; + enum config_scope prev_parsing_scope = current_parsing_scope; if (opts->commondir) repo_config = mkpathdup("%s/config", opts->commondir); @@ -1741,7 +1742,7 @@ static int do_git_config_sequence(const struct config_options *opts, if (!opts->ignore_cmdline && git_config_from_parameters(fn, data) < 0) die(_("unable to parse command-line config")); - current_parsing_scope = CONFIG_SCOPE_UNKNOWN; + current_parsing_scope = prev_parsing_scope; free(xdg_config); free(user_config); free(repo_config);