From: "Kyle J. McKay" <mackyle@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Jeff King <peff@peff.net>
Subject: Re: [PATCH v6 4/6] config: parse http.<url>.<variable> using urlmatch
Date: Wed, 31 Jul 2013 13:51:16 -0700 [thread overview]
Message-ID: <9DDDFC61-2946-4828-AD9E-52D2F0154479@gmail.com> (raw)
In-Reply-To: <1375298768-7740-5-git-send-email-gitster@pobox.com>
On Jul 31, 2013, at 12:26, Junio C Hamano wrote:
> From: "Kyle J. McKay" <mackyle@gmail.com>
>
> Use the urlmatch_config_entry() to wrap the underlying
> http_options() two-level variable parser in order to set
> http.<variable> to the value with the most specific URL in the
> configuration.
>
> Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Needs Peff's Signed-off-by: for the copious amount of text he wrote
that is included verbatim in the documentation part of the patch. He
previously gave it for this purpose.
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index 6e53fc5..60c140f 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -1513,6 +1513,50 @@ http.useragent::
> of common USER_AGENT strings (but not including those like git/
> 1.7.1).
> Can be overridden by the 'GIT_HTTP_USER_AGENT' environment variable.
>
> +http.<url>.*::
> + Any of the http.* options above can be applied selectively to some
> urls.
> + For a config key to match a URL, each element of the config key is
> + compared to that of the URL, in the following order:
> ++
> +--
> +. Scheme (e.g., `https` in `https://example.com/`). This field
> + must match exactly between the config key and the URL.
> +
> +. Host/domain name (e.g., `example.com` in `https://example.com/`).
> + This field must match exactly between the config key and the URL.
> +
> +. Port number (e.g., `8080` in `http://example.com:8080/`).
> + This field must match exactly between the config key and the URL.
> + Omitted port numbers are automatically converted to the correct
> + default for the scheme before matching.
> +
> +. Path (e.g., `repo.git` in `https://example.com/repo.git`). The
> + path field of the config key must match the path field of the URL
> + either exactly or as a prefix of slash-delimited path elements.
> This means
> + a config key with path `foo/` matches URL path `foo/bar`. A
> prefix can only
> + match on a slash (`/`) boundary. Longer matches take precedence
> (so a config
> + key with path `foo/bar` is a better match to URL path `foo/bar`
> than a config
> + key with just path `foo/`).
> +
> +. User name (e.g., `user` in `https://user@example.com/repo.git`). If
> + the config key has a user name it must match the user name in the
> + URL exactly. If the config key does not have a user name, that
> + config key will match a URL with any user name (including none).
Missing the single line follow-up patch:
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index 0dd5566..f2ed9ef 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -1568,7 +1568,8 @@ http.<url>.*::
> . User name (e.g., `user` in `https://user@example.com/repo.git`). If
> the config key has a user name it must match the user name in the
> URL exactly. If the config key does not have a user name, that
> - config key will match a URL with any user name (including none).
> + config key will match a URL with any user name (including none),
> + but at a lower precedence than a config key with a user name.
> --
> diff --git a/test-url-normalize.c b/test-url-normalize.c
> new file mode 100644
> index 0000000..81d3da9
> --- /dev/null
> +++ b/test-url-normalize.c
> @@ -0,0 +1,137 @@
> +#ifdef NO_CURL
> +
> +int main()
Need's Ramsey's patch here:
-int main()
+int main(void)
> +static int run_http_options(const char *file,
> + const char *opt,
> + const struct url_info *info)
> +{
> + struct strbuf opt_lc;
> + size_t i, len;
> + struct urlmatch_config config = { STRING_LIST_INIT_DUP };
> +
> + memcpy(&config.url, info, sizeof(*info));
> + config.section = "http";
> + config.collect_fn = http_options;
> + config.cascade_fn = git_default_config;
> + config.cb = NULL;
> +
> + if (git_config_with_options(urlmatch_config_entry, &config, file,
> 0))
> + return 1;
> +
> + len = strlen(opt);
> + strbuf_init(&opt_lc, len);
> + for (i = 0; i < len; ++i) {
> + strbuf_addch(&opt_lc, tolower(opt[i]));
> + }
> +
> + if (!strcmp("sslverify", opt_lc.buf))
> + printf("%s\n", curl_ssl_verify ? "true" : "false");
> + else if (!strcmp("sslcert", opt_lc.buf))
> + printf("%s\n", ssl_cert);
> +#if LIBCURL_VERSION_NUM >= 0x070903
> + else if (!strcmp("sslkey", opt_lc.buf))
> + printf("%s\n", ssl_key);
> +#endif
> +#if LIBCURL_VERSION_NUM >= 0x070908
> + else if (!strcmp("sslcapath", opt_lc.buf))
> + printf("%s\n", ssl_capath);
> +#endif
> + else if (!strcmp("sslcainfo", opt_lc.buf))
> + printf("%s\n", ssl_cainfo);
> + else if (!strcmp("sslcertpasswordprotected", opt_lc.buf))
> + printf("%s\n", ssl_cert_password_required ? "true" : "false");
> + else if (!strcmp("ssltry", opt_lc.buf))
> + printf("%s\n", curl_ssl_try ? "true" : "false");
> + else if (!strcmp("minsessions", opt_lc.buf))
> + printf("%d\n", min_curl_sessions);
And here
+#ifdef USE_CURL_MULTI
> + else if (!strcmp("maxrequests", opt_lc.buf))
> + printf("%d\n", max_requests);
+#endif
> + else if (!strcmp("lowspeedlimit", opt_lc.buf))
> + printf("%ld\n", curl_low_speed_limit);
Otherwise looks good to me.
next prev parent reply other threads:[~2013-07-31 20:51 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-31 19:26 [PATCH v6 0/6] http.<url>.<key> and friends Junio C Hamano
2013-07-31 19:26 ` [PATCH v6 1/6] http.c: fix parsing of http.sslCertPasswordProtected variable Junio C Hamano
2013-07-31 19:26 ` [PATCH v6 2/6] config: add helper to normalize and match URLs Junio C Hamano
2013-07-31 20:50 ` Kyle J. McKay
2013-07-31 19:26 ` [PATCH v6 3/6] config: add generic callback wrapper to parse section.<url>.key Junio C Hamano
2013-07-31 19:26 ` [PATCH v6 4/6] config: parse http.<url>.<variable> using urlmatch Junio C Hamano
2013-07-31 20:51 ` Kyle J. McKay [this message]
2013-07-31 20:51 ` [PATCH ALTERNATIVE v6 0/2] http.<url>.<key> and friends Kyle J. McKay
2013-07-31 20:52 ` [PATCH ALTERNATIVE v6 2/4] config: add helper to normalize and match URLs Kyle J. McKay
2013-07-31 20:52 ` [PATCH ALTERNATIVE v6 4/4] config: parse http.<url>.<variable> using urlmatch Kyle J. McKay
2013-07-31 22:01 ` [PATCH ALTERNATIVE v6 0/2] http.<url>.<key> and friends Junio C Hamano
2013-07-31 22:41 ` [PATCH ALTERNATIVE v6.v2 4/6] config: parse http.<url>.<variable> using urlmatch Kyle J. McKay
2013-07-31 19:26 ` [PATCH v6 5/6] builtin/config: refactor collect_config() Junio C Hamano
2013-07-31 19:26 ` [PATCH v6 6/6] config: "git config --get-urlmatch" parses section.<url>.key Junio C Hamano
2013-07-31 22:45 ` Jeff King
2013-07-31 23:03 ` Kyle J. McKay
2013-07-31 23:44 ` Jeff King
2013-08-01 17:25 ` Junio C Hamano
2013-08-01 17:30 ` Jeff King
2013-08-05 20:20 ` [PATCH ALTERNATIVE v6.v3 4/6] config: parse http.<url>.<variable> using urlmatch Kyle J. McKay
2013-08-05 22:56 ` Junio C Hamano
2013-08-05 23:57 ` Kyle J. McKay
2013-07-31 23:47 ` [PATCH v6 6/6] config: "git config --get-urlmatch" parses section.<url>.key Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9DDDFC61-2946-4828-AD9E-52D2F0154479@gmail.com \
--to=mackyle@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).