Re: [PATCH v7 07/10] config: preserve scope in do_git_config_sequence
"Matthew Rogers via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 16 quoted lines
> 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.
Show 21 quoted lines
> 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);