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 :/