Web lists-archives.com

Re: git config --help not functional on bad config




On Tue, Jul 11, 2017 at 12:08 PM, Jeff King <peff@xxxxxxxx> wrote:
> On Tue, Jul 11, 2017 at 12:05:01PM -0700, Stefan Beller wrote:
>
>> > diff --git a/builtin/help.c b/builtin/help.c
>> > index 334a8494a..c42dfc9e9 100644
>> > --- a/builtin/help.c
>> > +++ b/builtin/help.c
>> > @@ -273,7 +273,7 @@ static int git_help_config(const char *var, const char *value, void *cb)
>> >         if (starts_with(var, "man."))
>> >                 return add_man_viewer_info(var, value);
>> >
>> > -       return git_default_config(var, value, cb);
>> > +       return 0;
>>
>> Instead of ignoring any default config, we could do
>>
>>     git_default_config(var, value, cb);
>>     /* ignore broken config, we may be the help call for config */
>>     return 0;
>>
>> I looked through git_default_config which seems to only die
>> with useful error messages for compression related settings,
>> but these we may want to convert to errors instead of dies,
>> when going this way.
>
> There are other die calls hidden deeper. For instance:
>
>   $ git -c core.ignorecase=foo help config
>   fatal: bad numeric config value 'foo' for 'core.ignorecase': invalid unit
>
> Those ones are hard to fix without changing the call signature of
> git_config_bool().

Good point. While looking at it, parse_help_format can also die,
so building a safe git help config is hard:

    git config --global help.format foo
    # everything is broken, how do I fix it?
    git help config # breaks, too, for the same reason as you outlined :/