centos中,git-daemon是独立的包。

yum install git-daemon

默认的/etc/xinet.d/git为

service git

{

       disable         = no

       socket_type     = stream

       wait            = no

       user            = nobody

       server          = /usr/libexec/git-core/git-daemon

       server_args     = --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd --verbose

       log_on_failure  += USERID

}

根据配置,把相应的库clone到base-path位置,可以正常工作。


虽然我安装的git默认版本库路径为/home/git/repositories(即git用户的家目录为/home/git),但建议不要采用该路径。这样任何人都能看到你repositories下的所有版本库,包括gitosis-admin.git。而且直接把base-path改成如下:

service git

{

       disable         = no

       socket_type     = stream

       wait            = no

       user            = nobody

       server          = /usr/libexec/git-core/git-daemon

       server_args     = --base-path=/home/git/repositories --export-all --user-path=public_git --syslog --inetd --verbose

       log_on_failure  += USERID

}

会出现莫名的错误:

/var/log/messages:

May 23 10:32:48 localhost git-daemon[4746]: base-path '/home/git/repositories/' does not exist or is not a directory

May 23 10:32:48 localhost xinetd[4739]: EXIT: git status=1 pid=4746 duration=0(sec)


但是直接将配置中的语句拿到命令行执行没有问题。


非要这么做也是可以的。如下配置:(参考:http://bugzilla.novell.com/show_bug.cgi?id=461726)

service git

{

       disable         = no

       socket_type     = stream

       wait            = no

       user            = nobody

       server          = /usr/bin/git

       server_args     = daemon --reuseaddr --base-path=/home/git/repositories --export-all --user-path=public_git --syslog --inetd --verbose

       log_on_failure  += USERID

}


Finally, When clone a repository, having suffix .git or not makes big different. Please make it precise.

like

           git clone git://lbc.com/mysite.git

           git clone git://lbc.com/mysite