From: Kyle J. McKay Date: Tue, 30 Jul 2013 19:14:24 GMT Subject: Re: [PATCH 5/3] revert most of the http_options() change Message-ID: In-Reply-To: <7v1u6gztf1.fsf_-_@alter.siamese.dyndns.org> On Jul 29, 2013, at 19:13, Junio C Hamano wrote: > With the previous preparation step, the earlier 1bb00006 (config: > add support for http..* settings, 2013-07-21) that introduced > many repeated changes: > > -if (!strcmp("http.key", var)) { > +if (!strcmp("key", key)) { > + if (match_is_shorter(..., OPT_KEY_NAME)) > + return 0; > ... original processing for KEY_NAME ... > } > > can be reverted. > > This allows us to also get rid of the "repeating yourself to the > death" enum http_option_type, and new code (like db/http-savecookies > patch) that wants to add a new configuration to the http.* subsystem > does not have to conflict with http..variable series at > all. > > This is more-or-less how I want the endgame to look like. Not even > compile tested, but it is getting late so I'll show it to the list > in case people may want to play with it and polish it while I am > away for the night ;-). > > If people can agree that this is going in the right direction, > perhaps we should rebuild Kyle's series without detouring of adding > and then yanking what 1bb00006 (config: add support for http..* > settings, 2013-07-21) did in the next cycle. > > http.c | 181 ++++++++ > +------------------------------------------ > test-url-normalize.c | 9 ++- > 2 files changed, 39 insertions(+), 151 deletions(-) > > diff --git a/http.c b/http.c > index a91a00b..c7f513b 100644 > --- a/http.c > +++ b/http.c [...] > @@ -469,15 +342,23 @@ void http_init(struct remote *remote, const > char *url, int proactive_auth) > { > char *low_speed_limit; > char *low_speed_time; > - struct url_info info; > + char *normalized_url; > + struct urlmatch_config config = { STRING_LIST_INIT_DUP }; > + > + config.fn = http_options; > + config.cascade_fn = git_default_config; > + config.item_alloc = NULL; > + config.item_clear = NULL; > + config.cb = NULL; Missing this: + config.section = "http"; [...] > diff --git a/test-url-normalize.c b/test-url-normalize.c > index 0b809eb..fab94e5 100644 > --- a/test-url-normalize.c > +++ b/test-url-normalize.c > @@ -15,8 +15,15 @@ static int run_http_options(const char *file, > { > struct strbuf opt_lc; > size_t i, len; > + struct urlmatch_config config = { STRING_LIST_INIT_DUP }; > > - if (git_config_with_options(http_options, (void *)info, file, 0)) > + config.fn = http_options; > + config.cascade_fn = git_default_config; > + config.item_alloc = NULL; > + config.item_clear = NULL; > + config.cb = NULL; Missing this: + config.section = "http"; Without these it segfaults running the tests. However, now the tests that actually check the results using config files are failing: > # failed 1 among 11 test(s) I'm looking at it now to see if I can fix the problem.