下载最新的git源码包,./configure、make、 make install,很顺利,期间的依赖包都可以用yast搞定。源码包中已经包含了gitweb。
本地访问的话问题不大,远程访问的话,需要注意2个问题:
1. 资源库下的hooks文件夹下post-update.sample需要去掉后缀,成为post-update(高版本git才会这样),并chmod 775 post-update。
2. 对资源库文件夹本身,也需要设置下访问权限,不然后边使用gitweb时会出现一刷新项目就不显示的问题。
gitweb比较好配置,直接修改gitweb.cgi文件就可以:
our $GIT = "/usr/bin/git";
指向正确的git可执行文件位置
our $projectroot = "/home/server/git-res";
指向正确的git资源库位置
our $export_ok = "";
这个保持空就可以,如果资源库中有不希望别人通过gitweb就可以看到的项目,那么可以写上GITWEB_EXPORT_OK。之后在资源库中想要显示的文件夹中的.git下使用touch GITWEB_EXPORT_OK,它就会显示在gitweb中了。
另外还有很多选项可以自定义gitweb界面的一些信息。
设置好之后在apache2中的vhost.d中建立一个xxxx.conf文件(名字随便了,只要后缀是conf就可以),加入一台虚拟主机,配置如:
ServerName gitserver
DocumentRoot /var/www/gitweb
Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride All
order allow,deny
Allow from all
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi
再在listen.conf中加入8080端口
重启下apach2就可以使用了。
另外只有用ssh方式访问git的用户才能有推送的权限(假设他对资源库有写的权限的话),其他方式的都会失败,git-daemon设置好参数应该也是可以的,但git本身的访问权限不好控制。
因此还是使用ssh来做访问控制。