28.3 以inetd方式配置运行

最简单的方式是以inetd服务的方式运行git-daemon。在配置文件/etc/inetd.conf中添加如下设置:


git stream tcp nowait nobody/usr/bin/git

git daemon—inetd—verbose—export-all

/gitroot/foo/gitroot/bar


说明:

以nobody用户身份执行git daemon服务。

默认git-daemon只对包含文件git-daemon-export-ok的版本库提供服务。使用参数—export-all后,无论版本库是否存在标识文件git-daemon-export-ok,都对版本库提供Git访问服务。

后面的两个参数是版本库根目录,用户只可以访问指定目录下的Git版本库。

例如可以访问git://server/gitroot/foo/project1.git和git://server/gitroot/bar/project2.git,但是git://server/others/project3.git是访问不到的。

如果版本库的路径比较深,有什么办法能在用户访问时提供短一些的URL地址呢?可以使用参数—base-path=<path>建立版本库根目录映射,例如下面的inetd的配置:


git stream tcp nowait nobody/usr/bin/git

git daemon—inetd—verbose—export-all

—base-path=/var/cache/var/cache/git


在上面的配置中,设置提供版本库服务的路径为/var/cache/git,但因为配置了—base-path=/var/cache参数,在实际访问时用户所请求的Git版本库路径都会添加这个前缀,然后再到指定的目录中去寻找。例如当用户访问git://server/git/myrepos.git时,实际访问的路径是/var/cache/git/myrepos.git。