On Tue, Jan 31, 2017 at 02:45:40PM -0800, Junio C Hamano wrote: > * ps/urlmatch-wildcard (2017-01-31) 5 commits > . urlmatch: allow globbing for the URL host part > . urlmatch: include host in urlmatch ranking > . urlmatch: split host and port fields in `struct url_info` > . urlmatch: enable normalization of URLs with globs > . mailmap: add Patrick Steinhardt's work address > > The part in "http.." configuration variable > can now be spelled with '*' that serves as wildcard. > E.g. "http.https://*.example.com.proxy" can be used to specify the > proxy used for https://a.example.com, https://b.example.com, etc., > i.e. any host in the example.com domain. > > With the update it still seems to fail the same t5551#31 > cf. Yeah, you're right. Sorry about this one. I finally fixed the problem to get t5551 working again, see the attached patch below. The problem was that I did not honor the case where multiple configuration entries exist with the same key. In some cases, this has to lead to the value being accumulated multiple times, as for example with http.extraheaders used in t5551. So the fixup below fixes this. I just tried to write additional tests to exercise this in our config-tests by using `git config --get-urlmatch` with multiple `http.extraheader`s set. I've been stumped that it still didn't work correctly with my patch, only the last value was actually ever returned. But in fact, current Git (tested with v2.11.0) also fails to do so correctly and only lists the last value. As such, I'd argue this is a separate issue. If you're not opposed, I'd like to fix this in a separate patch series later on (probably after Git Merge). --- >8 --- Subject: [PATCH] fixup! urlmatch: include host in urlmatch ranking --- urlmatch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/urlmatch.c b/urlmatch.c index 6c12f1a48..739a1a558 100644 --- a/urlmatch.c +++ b/urlmatch.c @@ -587,7 +587,7 @@ int urlmatch_config_entry(const char *var, const char *value, void *cb) if (!item->util) { item->util = xcalloc(1, sizeof(matched)); } else { - if (cmp_matches(&matched, item->util) <= 0) + if (cmp_matches(&matched, item->util) < 0) /* * Our match is worse than the old one, * we cannot use it. -- 2.11.0