2009-11-12 18 views
107

Estoy trabajando detrás de un proxy HTTP. Intento clonar el árbol fuente de Android utilizando su herramienta "repo".Cómo convertir `git:` urls a `http:` urls

Esta herramienta insiste en usar las URL git://, aunque las URL http:// también funcionan. Como resultado, no puedo descargar la fuente.

¿Es posible forzar git para usar siempre http?

Editar: mi http_proxy está configurado correctamente. Por ejemplo, esto funciona:

git clone http://android.git.kernel.org/platform/manifest.git 

Pero esto no significa (Error = la conexión agotado):

git clone git://android.git.kernel.org/platform/manifest.git 

Así this answer en realidad no me ayuda.

+0

Ver esto [respuesta anterior] (http://stackoverflow.com/questions/128035/how-do-i-pull-from-a-git-repository-through-an-http-proxy/397642#397642) . –

Respuesta

243

He aquí un ejemplo de reescribir el protocolo predeterminado para GitHub:

git config --global url.https://github.com/.insteadOf git://github.com/ 
+16

ayuda cuando el firewall bloquea el protocolo git! :) – Turowicz

+8

No funciona para mí :( –

+0

Esto funciona y es muy sencillo. Esta debería ser la respuesta aceptada –

35

No sé cómo esta herramienta repo utiliza Git (y si se puede configurar 'repo' para utilizar el protocolo http), pero se puede tratar de engañar usando url.<base>.insteadOf variable de configuración (ver git-config y git-fetch páginas de manual).

¿Ha intentado utilizar core.gitProxy para pasar a través del firewall, si es el problema con el uso del protocolo git?

+2

Gracias, esta variable "insteadOf" es exactamente lo que necesitaba. Gracias por – noamtm

22

Tuve el mismo problema al obtener recursivamente submódulos en un repositorio de git. Estoy detrás de un firewall loco que no permite conexiones salientes en el puerto git. Algunos de los submódulos de los submódulos se codificaron como git://github.com/blah/blah.git. Esto mató a mi población recursiva de submódulos. La solución es la siguiente:

git config --global url."https://<GITUSERNAME>@".insteadOf git:// 

Esto reemplaza git:// con https://<GITUSERNAME>@ en todas las URLs de repositorio submódulo. Necesita reemplazar <GITUSERNAME> con su propio nombre de usuario git. También tenga en cuenta que se requiere --global; solo agregar esta configuración al directorio base del repositorio no funciona.

+0

realidad incluyendo la solución ... – GalacticJello

+3

Y no sólo tiene que utilizar git config url --global. "Https: //" .insteadOf git: // como se muestra aquí? https://github.com/angular/angular-phonecat/issues/141 Es decir, ¿el nombre de usuario es obligatorio? –

1

Usted puede verificar en ~/.gitconfig si se desea sobreescribir SSH con https: //, o viceversa.