Hinweis: Der Patch hier wurde 2015 für Version 2.4.11 auf Git angewendet. Seitdem können Sie einfach socks: // urls mit den Konfigurationseinstellungen von http.proxy verwenden.
Für das git: // Protokoll haben wir Using Git mit einem SOCKS-Proxy . Es scheint jedoch, dass Git Socken-Proxys nicht richtig unterstützt. Git selbst ist mit libcurl verknüpft. Daher wird die .curlrc-Datei nicht verwendet (dies gilt nur für den Curl-Befehlszeilenclient). Der folgende Patch bietet jedoch die erforderliche Unterstützung. Mit diesem Patch, der auf git angewendet wird, können wir einfach die Umgebungsvariable ALL_PROXY oder HTTP_PROXY oder HTTPS_PROXY auf socks://hostname:portnum
(oder socks4 / socks5) setzen, oder die Konfigurationseinstellung http.proxy git und libcurl verwenden jetzt tatsächlich das socks-Protokoll, wenn der Proxy verwendet wird.
Zum Beispiel eine aktive Ablaufverfolgung:
$ GIT_CURL_VERBOSE=1 bin-wrappers/git -c "http.proxy=socks://localhost:1080" ls-remote http://github.com/patthoyts/tclftd2xx.git
* Couldn't find host github.com in the _netrc file; using defaults
* About to connect() to proxy localhost port 1080 (#0)
* Trying 127.0.0.1...
* connected
* SOCKS4 request granted.
* Connected to localhost (127.0.0.1) port 1080 (#0)
> GET /patthoyts/tclftd2xx.git/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.8.1.msysgit.1.dirty
... and on to a successful request ...
Der notwendige Patch:
diff --git a/http.c b/http.c
index 3b312a8..f34cc75 100644
--- a/http.c
+++ b/http.c
@@ -322,6 +322,14 @@ static CURL *get_curl_handle(void)
if (curl_http_proxy) {
curl_easy_setopt(result, CURLOPT_PROXY, curl_http_proxy);
curl_easy_setopt(result, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
+#if LIBCURL_VERSION_NUM >= 0x071800
+ if (!strncmp("socks5", curl_http_proxy, 6))
+ curl_easy_setopt(result, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
+ else if (!strncmp("socks4a", curl_http_proxy, 7))
+ curl_easy_setopt(result, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4A);
+ else if (!strncmp("socks", curl_http_proxy, 5))
+ curl_easy_setopt(result, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
+#endif
}
return result;