Re: [PATCH v2 03/13] config: make 'git config list --type=<X>' work
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Feb 17, 2026, 09:04 UTC
- Message-ID
- <aZQvLzL-AhPG3rbx@pks.im>
- In-Reply-To
- <6d2a48a3b7f61c068392e66933caaf1d78055857.1771026918.git.gitgitgadget@gmail.com>
On Fri, Feb 13, 2026 at 11:55:08PM +0000, Derrick Stolee via GitGitGadget wrote:
Show 14 quoted lines
> From: Derrick Stolee <stolee@gmail.com> > > Previously, the --type=<X> argument to 'git config list' was ignored and > did nothing. Now, we add the use of format_config() to the > show_all_config() function so each key-value pair is attempted to be > parsed. This is our first use of the 'gently' parameter with a nonzero > value. > > When listing multiple values, our initial settings for the output format > is different. Add a new init helper to specify the fact that keys should > be shown and also add the default delimiters as they were unset in some > cases. > > If there is an error in parsing, then the row is not output.
It might make sense to document the rationale behind this decision in the commit message.
Show 26 quoted lines
> diff --git a/builtin/config.c b/builtin/config.c
> index b4c4228311..4c4c791883 100644
> --- a/builtin/config.c
> +++ b/builtin/config.c
> @@ -318,21 +318,12 @@ static int show_all_config(const char *key_, const char *value_,
> {
> const struct config_display_options *opts = cb;
> const struct key_value_info *kvi = ctx->kvi;
> + struct strbuf formatted = STRBUF_INIT;
>
> - if (opts->show_origin || opts->show_scope) {
> - struct strbuf buf = STRBUF_INIT;
> - if (opts->show_scope)
> - show_config_scope(opts, kvi, &buf);
> - if (opts->show_origin)
> - show_config_origin(opts, kvi, &buf);
> - /* Use fwrite as "buf" can contain \0's if "end_null" is set. */
> - fwrite(buf.buf, 1, buf.len, stdout);
> - strbuf_release(&buf);
> - }
> - if (!opts->omit_values && value_)
> - printf("%s%c%s%c", key_, opts->delim, value_, opts->term);
> - else
> - printf("%s%c", key_, opts->term);
> + if (format_config(opts, &formatted, key_, value_, kvi, 1) >= 0)
> + fwrite(formatted.buf, 1, formatted.len, stdout);We could probably use puts(3p) instead, but as we know the length of the data ahead of time it might be more efficient to use fwrite(3p) indeed. Ultimately I guess it doesn't matter much.
Patrick