2010-03-29 7 views
21

J'ai mis en place .git dans un répertoire sur ma machine locale. Je lance alors:Pourquoi git-daemon ne va-t-il pas servir mon référentiel?

mkdir a 
cd a 
git init 
git daemon

Lorsque je tente de cloner le dépôt dans a, je reçois l'erreur suivante:

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

Comment puis-je cloner mon dépôt sur le protocole git?

Répondre

39

Vous devez laisser git-daemon savoir qu'il peut exporter votre dépôt:

$ 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.

Une bien meilleure est de l'exécuter à partir xinetd. Créer et modifier /etc/xinetd.d/git le long des lignes 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 
} 

Ne pas oublier de sudo killall -HUP xinetd. Maintenant, tous les dépôts git sous /pub/scm seront disponibles pour tous ceux qui le demandent.

13

Vous devez soit mettre un fichier vide appelé git-daemon-export-ok dans le référentiel ou démarrer git daemon avec l'option --export-all.

Citation du git-daemon 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

Tout ajouter ceci: Dans mon cas, n'a pas été "git-daemon-export-ok" lisible par l'utilisateur git-ro qui était en cours d'exécution le démon. – Belac