2012-06-17 7 views
29

Cuando clono un repositorio, ¿hay alguna diferencia entre estas dos URL?¿Por qué algunas URL de repositorio terminan en .git mientras que otras no?

  1. sin extensión .git:

    git clone http://foo/repo 
    
  2. Con extensión .git:

    git clone http://foo/repo.git 
    
+0

si se refiere a las direcciones URL de Github, el .git es opcional – gorelative

+5

Puede que le interese la respuesta [this] (http://stackoverflow.com/a/1734421/164966). Específicamente * La convención de nomenclatura de reponame.git generalmente se reserva para repositores desnudos ... * – R0MANARMY

Respuesta

30

La convención es que el .git de extensión debe ser utilizado para desnudo repositorios, y dejó de directorios con un árbol de trabajo. A Git realmente no le importa, pero tiene algunos métodos de conveniencia que lo hacen bastante transparente.

Por ejemplo, si usted tiene un repositorio llamado /tmp/foo.git y le llamaremos git clone file:///tmp/foo, Git primero tratará de encontrar /tmp/foo. Si no existe, intentará /tmp/foo.git en su lugar.

Esto hace no funciona al revés. Si el directorio se denomina /tmp/foo y se intenta clonar a partir /tmp/foo.git se le dirá:

fatal: '/tmp/foo.git' no parece ser un repositorio git

La mayor parte de la funcionalidad HTTP/HTTPS proviene de su servidor web, no de Git. Incluso si está usando Smart HTTP transport, sospecho que la mayor parte de la magia ocurre en una directiva LocationMatch del lado del servidor. Dejando a un lado la teoría, algunas pruebas rápidas contra GitHub muestran que funciona de la misma manera que las de SSH y Git en ese aspecto, pero su kilometraje puede variar en otros servidores web.

+1

Pensé que la capacidad de http inteligente era un envoltorio en el lado git, por lo que el lado del servidor simplemente está proporcionando una respuesta HTTP. https://github.com/blog/642-smart-http-support pero http://www.kernel.org/pub/software/scm/git/docs/v1.7.3/git-http-backend.html Suggest Estaba equivocado y es un poco de funcionalidad de servidor. –

Cuestiones relacionadas