529 votes

Comment extraire des données d'un dépôt Git par l'intermédiaire d'un proxy HTTP ?

Remarque : si le cas d'utilisation décrit concerne l'utilisation de sous-modules au sein d'un projet, il en va de même pour un projet normal de git clone d'un référentiel par HTTP.

J'ai un projet sous contrôle Git. J'aimerais ajouter un sous-module :

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

Mais je reçois

...
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'

J'ai configuré mon HTTP_PROXY :

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

J'ai même un réglage global de Git pour le proxy http :

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

Quelqu'un a-t-il réussi à faire fonctionner de manière cohérente les recherches HTTP à travers un proxy ? Ce qui est vraiment étrange, c'est que quelques projets sur GitHub fonctionnent bien ( awesome_nested_set par exemple), mais d'autres échouent systématiquement ( rails par exemple).

0 votes

Votre proxy pourrait-il censurer certains mots ou quelque chose du genre, affectant ainsi uniquement les dépôts où ces mots apparaissent dans le flux d'octets ?

9 votes

6 votes

@alvaro, je pense que vous voulez dire que Faire fonctionner git avec un serveur proxy est un doublon possible de cette question. Cette question est plus ancienne que celle à laquelle vous faites référence.

628voto

Derek Mahar Points 7125

Vous pouvez également définir le proxy HTTP utilisé par Git dans la propriété de configuration globale http.proxy :

git config --global http.proxy http://proxy.mycompany:80

Pour s'authentifier auprès du proxy :

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/

(Le mérite en revient à @EugeneKulabuhov y @JaimeReynoso pour le format d'authentification).

8 votes

Cela a fonctionné pour moi : Définir HTTP_PROXY dans l'environnement de l'utilisateur (sous Windows), puis le commentaire ci-dessus avec $HTTP_PROXY (en majuscules). +1 pour cette solution.

4 votes

CleverCoder, sous Windows, vous devez spécifier %HTTP_PROXY%, et non pas $HTTP_PROXY (sauf si vous utilisez Cygwin, bien sûr). Je modifierai ma réponse pour qu'elle fonctionne dans un environnement Windows plutôt qu'Unix.

7 votes

Où dois-je mettre le nom d'utilisateur et le mot de passe pour le proxy ?

151voto

Max MacLeod Points 8425

Il y a déjà eu d'excellentes réponses à ce sujet. Cependant, j'ai pensé apporter ma pierre à l'édifice car certains serveurs proxy exigent que vous vous authentifiiez avec un nom d'utilisateur et un mot de passe. Parfois, il s'agit d'un domaine.

Ainsi, par exemple, si votre configuration de serveur proxy est la suivante :

Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword

Ensuite, ajoutez à votre .gitconfig à l'aide de la commande suivante :

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080

Ne vous inquiétez pas https . Tant que le serveur proxy spécifié prend en charge http et https, une seule entrée dans le fichier de configuration suffit.

Vous pouvez alors vérifier que la commande a ajouté l'entrée à votre .gitconfig en faisant cat .gitconfig :

A la fin du fichier, vous verrez une entrée comme suit :

[http]
    proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080

C'est tout !

0 votes

Intéressant. Je parviens à atteindre la partie "Résoudre les deltas" à 100 %, mais il semble que le processus de clonage se bloque ensuite. Quelqu'un a-t-il rencontré ce problème ?

1 votes

+1. Et bientôt, vous pourrez pour configurer un proxy par url !

0 votes

@apoplexy pouvez-vous commenter votre proposition de modification afin que je puisse en tenir compte ?

137voto

James A. Rosen Points 25774

Ce qui a finalement fonctionné, c'est la mise en place de l'option http_proxy variable d'environnement. J'avais mis HTTP_PROXY correctement, mais git préfère apparemment la version en minuscules.

3 votes

La mise en place http.proxy dans la configuration globale de Git ? Dans votre question, vous avez défini http.proxy dans la configuration du référentiel local.

24 votes

Dans mon cas, j'ai dû définir le https_proxy

1 votes

https.proxy semble fonctionner pour moi car j'utilisais https sur github

54voto

sethbc Points 907

Il semble que vous utilisiez une compilation mingw de Git sur Windows (ou peut-être une autre dont je n'ai pas entendu parler). Il y a des moyens de déboguer cela : Je crois que tout le travail de proxy http pour git est fait par curl. Définissez cette variable d'environnement avant d'exécuter git :

GIT_CURL_VERBOSE=1

Cela devrait au moins vous donner une idée de ce qui se passe en coulisses.

7 votes

Lorsque j'ajoute cette variable d'environnement, msysgit n'imprime rien de plus :(

0 votes

Après m'être battu avec des proxies pendant un certain temps, cette astuce m'a permis de découvrir que la base de données de certificats de curl était manquante ou mal gérée, et que c'était la raison pour laquelle les requêtes échouaient.

0 votes

Cela fait un certain temps que je le cherche. Je vous remercie.

26voto

datasmid Points 1664

Lorsque votre équipe réseau effectue une inspection ssl en réécrivant les certificats, l'utilisation d'une url http au lieu d'une url https, combinée à la définition de cette variable, a fonctionné pour moi.

git config --global http.proxy http://proxy:8081

2 votes

Vous pouvez également ajouter ceci à l'environnement pour accepter les certificats réécrits que les gars du réseau proposent pour inspecter votre trafic : export GIT_SSL_NO_VERIFY=true

0 votes

Cela a parfaitement fonctionné pour moi. Je vous remercie. Je n'ai eu qu'à ajouter git config --global http.proxy proxy:8081 git config --global https.proxy proxy:8081

0 votes

Solution simple et rapide, +1 pour cette réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X