On Mon, Nov 20, 2017 at 9:04 AM, Jeff King <peff@xxxxxxxx> wrote: > On Sat, Nov 18, 2017 at 12:37:03PM +0900, Junio C Hamano wrote: > >> > +int git_config_expiry_date(timestamp_t *timestamp, const char *var, const char *value) >> > +{ >> > + if (!value) >> > + return config_error_nonbool(var); >> > + if (parse_expiry_date(value, timestamp)) >> > + return error(_("'%s' for '%s' is not a valid timestamp"), >> > + value, var); >> > + return 0; >> > +} >> > + >> >> I think this is more correct even within the context of this >> function than dying, which suggests the need for a slightly related >> (which is not within the scope of this change) clean-up within this >> file as a #leftoverbits task. I think dying in these value parsers >> goes against the point of having die_on_error bit in the >> config-source structure; Heiko and Peff CC'ed for b2dc0945 ("do not >> die when error in config parsing of buf occurs", 2013-07-12). > > Yes, I agree that ideally the value parsers should avoid dying. > Unfortunately I think it will involve some heavy refactoring, since > git_config_bool(), for instance, does not even have a spot in its > interface to return an error. > > Of course we can leave those other helpers in place and add a "gently" > form for each. It is really only submodule-config.c that wants to be > careful in its callback, so we could just port that. Skimming it over, > it looks like there are a few git_config_bool() and straight-up die() > calls that could be more forgiving. > > +cc Stefan, who added the die(). It may be that we don't care that much > these days about recovering from broken .gitmodules files. By that you mean commits like 37f52e9344 (submodule-config: keep shallow recommendation around, 2016-05-26) for example? That adds a git_config_bool to the submodule config machinery. I agree that we'd want to be more careful, but for now I'd put it to the #leftoverbits. Thanks, Stefan