折腾了小俩小时,走了很多弯路。最初折腾的一个多小时,差不多都浪费在权限上。也不知道怎么忽然一下子就想到了这个问题。去一看,NND,gitweb.cgi竟然没有执行权限,FUCK!

话说,本来git自己自带有一个WEB接口即gitweb,我们的repo.or.cz、git.kernel.org其实都是用的这个。所以我们只需要下载git的源代码,然后配置——编译——安装即可:

搞定之后,就是配置HTTP服务器了,这里以Apache为例,在git服务所在的虚拟主机配置段(或者主服务器配置段)添加如下配置:

需要注意下面几点:

  • 代码仓库总目录就是所有仓库的根目录,文件系统中的绝对路径。这个目录下有很多名字为“项目名.git”的目录,实际上就是git仓库下的.git目录的副本。这些项目在gitweb中将直接显示为“项目名.git”。当然也可以是普通目录,然后将“项目名.git”目录放到他们下面,这样会显示为“目录/项目名.git”

  • 安装到的目录,必须具备cgi(或者perl-cgi)可执行权限。具体参考Apache配置文档

  • 样式表地址、LOGO地址、网页图标地址要注意,他们不是文件系统中的绝对路径,而是URL路径。也就是说能够通过WEB访问到的路径。尤其注意不要将这些文件放到网站根目录下的ScriptAlias指定的那个/gitweb目录中,因为这个URL路径实际上会被重定向到cgi脚本。如果使用这个的路径就无法获取到文件,而只会将文件名等参数传递给这个cgi程序,自然无法访问到这些文件。