diff options
author | Sam Vilain <sam.vilain@catalyst.net.nz> | 2007-12-04 10:48:54 +1300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-12-03 23:43:07 -0800 |
commit | 14c98218845ad2acbd42b8d913503ff6fb3fd2ac (patch) | |
tree | 80727a8ed62317aa7602f5cbcc117e7d3a3de211 | |
parent | 9c5665aa3c938b0e085ca34a8126110edcffa217 (diff) | |
download | git-14c98218845ad2acbd42b8d913503ff6fb3fd2ac.tar.gz |
Add remote.<name>.proxy
As well as allowing a default http.proxy option, allow it to be set
per-remote.
Signed-off-by: Sam Vilain <sam.vilain@catalyst.net.nz>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | Documentation/config.txt | 8 | ||||
-rw-r--r-- | remote.c | 2 | ||||
-rw-r--r-- | remote.h | 5 | ||||
-rw-r--r-- | transport.c | 4 |
4 files changed, 18 insertions, 1 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index 15745de67b..6ae11842e5 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -552,7 +552,8 @@ access method. http.proxy:: Override the HTTP proxy, normally configured using the 'http_proxy' - environment variable (see gitlink:curl[1]). + environment variable (see gitlink:curl[1]). This can be overridden + on a per-remote basis; see remote.<name>.proxy http.sslVerify:: Whether to verify the SSL certificate when fetching or pushing @@ -702,6 +703,11 @@ remote.<name>.url:: The URL of a remote repository. See gitlink:git-fetch[1] or gitlink:git-push[1]. +remote.<name>.proxy:: + For remotes that require curl (http, https and ftp), the URL to + the proxy to use for that remote. Set to the empty string to + disable proxying for that remote. + remote.<name>.fetch:: The default set of "refspec" for gitlink:git-fetch[1]. See gitlink:git-fetch[1]. @@ -278,6 +278,8 @@ static int handle_config(const char *key, const char *value) } else if (!strcmp(subkey, ".tagopt")) { if (!strcmp(value, "--no-tags")) remote->fetch_tags = -1; + } else if (!strcmp(subkey, ".proxy")) { + remote->http_proxy = xstrdup(value); } return 0; } @@ -25,6 +25,11 @@ struct remote { const char *receivepack; const char *uploadpack; + + /* + * for curl remotes only + */ + char *http_proxy; }; struct remote *remote_get(const char *name); diff --git a/transport.c b/transport.c index 50db9807d0..3eb93b4875 100644 --- a/transport.c +++ b/transport.c @@ -470,6 +470,10 @@ static struct ref *get_refs_via_curl(struct transport *transport) curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite_buffer); curl_easy_setopt(slot->curl, CURLOPT_URL, refs_url); curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, NULL); + if (transport->remote->http_proxy) + curl_easy_setopt(slot->curl, CURLOPT_PROXY, + transport->remote->http_proxy); + if (start_active_slot(slot)) { run_active_slot(slot); if (results.curl_result != CURLE_OK) { |