Comment utiliser git derrière un proxy

Git

Git ne passera pas, cria le proxy. Si si répondit Anonymous

Git est un excellent outil de gestion de codes sources distribués, facilitant le travail des développeurs répartis sur différents sites. Problème, si votre entreprise utilise un proxy restrictif et que l'équipe en charge a l'intelligence d'une huître, vous pourriez vous retrouver dans l'impossibilité d'utiliser ce gestionnaire de dépôt.

Cet article vous explique comment utiliser Git au travers un proxy depuis un poste Ubuntu, et autre Debian like.

Déclarer un proxy http

Sous Linux, les commandes en ligne utilisent la variable d'environnement http_proxy pour déclarer le proxy à utiliser pour les requêtes HTTP.
Notez que l'utilisation de la variable http_proxy est une convention de programmation, pas une obligation. Ainsi, il est possible que certains programmes ignorent la variable http_proxy et, soit attendent un argument, soit restent bloqués derrière le proxy.

La syntaxe est la suivante, en ligne de commande :

$ export http_proxy="http://USER:PASSWORD@PROXY_IP:PROXY_PORT"

où les mots en majuscules sont à remplacer par vos valeurs.
Voilà pour la déclaration du proxy HTTP.

Git et le protocole HTTP

Git 1.7 supporte plusieurs protocoles : ssh, http, https, ftp, ftps, rsync et son propre protocole git. Ce dernier, optimisé, est le plus utilisé.
Ainsi, vous trouverez beaucoup de références vers des projets open source hébergés sous GitHub via des urls du type git://github.com/edavis10/redmine.git.

Mais le protocole git n'utilise pas la variable http_proxy** :

$ echo $http_proxy 
http://sylvain:password@192.168.0.254:8080
$ git clone -b stable git://github.com/edavis10/redmine.git
Cloning into redmine...
github.com[0: 207.97.227.239]: errno=No route to host

Remplacez simplement git:// par http:// et le tour est joué :

$ git clone -b stable http://github.com/edavis10/redmine.git
Cloning into redmine...
remote: Counting objects: 76469, done.
remote: Compressing objects: 100% (26122/26122), done.
remote: Total 76469 (delta 51382), reused 73132 (delta 48997)
Receiving objects: 100% (76469/76469), 35.82 MiB | 470 KiB/s, done.
Resolving deltas: 100% (51382/51382), done.

Le projet redmine est déployé. Git a traversé votre proxy.
cqfd.