¿Por qué Git-Daemon no servirá a mi repository?

Configuré .git en un directory en mi máquina local. Entonces corro:

  mkdir a
 cd a
 git init
 git daemon 

Cuando bash clonar el repository en a , aparece el siguiente error:

  mkdir b
 cd b
 git clone git: //127.0.0.1
 Repositorio de Git vacío inicializado en /b/127.0.0.1/.git/
 fatal: el extremo remoto colgó inesperadamente 

¿Cómo puedo clonar mi repository sobre el protocolo git?

Debes informar a git-daemon que puede exportar tu repository:

  $ git init --bare /tmp/my-repo.git
 Inicializó el repository de Git vacío en /tmp/my-repo.git/

 $ git daemon --verbose --base-path = / tmp --export-all /tmp/my-repo.git &

 $ git clone git: //`hostname`/my-repo.git
 Inicializó el repository de Git vacío en /tmp/my-repo/.git/
 advertencia: Parece que ha clonado un repository vacío. 

Una forma mucho mejor es ejecutarlo desde xinetd . Crea y modifica /etc/xinetd.d/git largo de las líneas de

 # description: The git server offers access to git repositories service git { disable = no type = UNLISTED port = 9418 socket_type = stream wait = no user = nobody server = /usr/local/bin/git server_args = daemon --inetd --export-all --base-path=/pub/scm log_on_failure += USERID } 

No te olvides de sudo killall -HUP xinetd . Ahora, todos los repositorys git debajo de /pub/scm estarán disponibles para cualquiera que pregunte.

Tienes que poner un file vacío llamado git-daemon-export-ok en el repository o iniciar git daemon con la opción --export-all .

Cita de la página man de git-daemon:

Verifica que el directory tenga el file mágico "git-daemon-export-ok", y rechazará exportar cualquier directory de git que no haya sido explícitamente marcado para exportar de esta manera (a less que se especifique el parámetro –export-all ) Si pasa algunas routes de directory como arguments de git daemon, puede restringir aún más las ofertas a una list blanca que incluya esas.