Wie kann ich ein Git-Repository über einen HTTP-Proxy abrufen?

Hinweis: Der beschriebene Anwendungsfall bezieht sich zwar auf die Verwendung von Submodulen innerhalb eines Projekts, aber das Gleiche gilt auch für einen normalen git clone eines Repositorys über HTTP.

Ich habe ein Projekt unter Git-Kontrolle. Ich würde gerne ein Submodul hinzufügen:

git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu

Aber ich erhalte

...
got 1b0313f016d98e556396c91d08127c59722762d0
got 4c42d44a9221209293e5f3eb7e662a1571b09421
got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7
error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/metri...
Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a
while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658.
fatal: Fetch failed.
Clone of 'http://github.com/jscruggs/metric_fu.git' into submodule path 'vendor/plugins/metric_fu'

Ich habe meine HTTP_PROXY eingerichtet:

c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80

Ich habe sogar eine globale Git-Einstellung für den HTTP-Proxy:

c:\project> git config --get http.proxy
http://proxy.mycompany:80

Hat irgendjemand HTTP-Abrufe durch einen Proxy konsistent zum Laufen gebracht? Was wirklich seltsam ist, ist, dass ein paar Projekte auf GitHub funktionieren gut (awesome_nested_set zum Beispiel), aber andere konsequent fehlschlagen (rails zum Beispiel).

Lösung

Was schließlich funktionierte, war das Setzen der Umgebungsvariablen http_proxy. Ich hatte HTTP_PROXY korrekt gesetzt, aber Git mag anscheinend die klein geschriebene Version lieber.

Kommentare (11)

Es sieht so aus, als ob Sie eine mingw-Kompilierung von Git unter Windows verwenden (oder möglicherweise eine andere, von der ich noch nichts gehört habe). Es gibt Möglichkeiten, dies zu debuggen: Ich glaube, die gesamte http-Proxy-Arbeit für Git wird von curl erledigt. Setzen Sie diese Umgebungsvariable, bevor Sie Git ausführen:

GIT_CURL_VERBOSE=1

Dies sollte Ihnen zumindest eine Vorstellung davon geben, was hinter den Kulissen vor sich geht.

Kommentare (4)

Dies ist kein Problem mit Ihrem Proxy. Es ist ein Problem mit Github (oder Git). Es schlägt auch bei mir mit git-1.6.0.1 auf Linux fehl. Bug wurde bereits gemeldet (auch von Ihnen).

Stellen Sie sicher, dass Sie Ihre Pasties löschen, sie sind bereits bei Google. Edit: Ich muss geträumt haben, ich glaube, man kann sie nicht löschen. Verwenden Sie stattdessen Gist?

Kommentare (1)