2010-03-29 14 views
21

Konfiguruję .git w katalogu na moim komputerze lokalnym. Następnie uruchom:Dlaczego git-daemon nie obsługuje mojego repozytorium?

mkdir a 
cd a 
git init 
git daemon

Gdy próbuję sklonować repozytorium w a, otrzymuję następujący błąd:

mkdir b 
cd b 
git clone git://127.0.0.1 
Initialized empty Git repository in /b/127.0.0.1/.git/ 
fatal: The remote end hung up unexpectedly

Jak można sklonować repozytorium nad moją protokołu git?

Odpowiedz

39

Musisz pozwolić git-daemon wiem może eksportować repozytorium:

$ git init --bare /tmp/my-repo.git 
Initialized empty Git repository in /tmp/my-repo.git/ 

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

$ git clone git://`hostname`/my-repo.git 
Initialized empty Git repository in /tmp/my-repo/.git/ 
warning: You appear to have cloned an empty repository.

Znacznie lepszym sposobem jest uruchamianie go z xinetd. Tworzenie i dostosować /etc/xinetd.d/git wzdłuż linii

# 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 
} 

Nie zapomnij sudo killall -HUP xinetd. Teraz wszystkie repozytoria git pod /pub/scm będą dostępne dla każdego, kto zapyta.

13

Musisz albo umieścić pusty plik o nazwie git-daemon-export-ok w repozytorium, albo uruchomić git daemon z opcją --export-all.

Cytat z git-demona man page:

It verifies that the directory has the magic file "git-daemon-export-ok", and it will refuse to export any git directory that hasn't explicitly been marked for export this way (unless the --export-all parameter is specified). If you pass some directory paths as git daemon arguments, you can further restrict the offers to a whitelist comprising of those.

+1

Wystarczy dodając w ten sposób: W moim przypadku "git-daemon-export-ok" nie był odczytywany przez użytkownika git-ro, który był uruchomiony demon. – Belac

Powiązane problemy