Gitweb提供了git版本库的图形化web浏览功能。它不仅让用户可以一目了然地看到服务器上的最新版本和分支,标签等情况,还允许用户在不必clone整个版本库的情况下,获得某个版本的某个文件。笔者的git server是一台ubuntu的机器,用gitolite做权限管理。下面是在上面用apache2搭建gitweb的步骤:
1. 安装apache2
可以用命令sudo service apache2 restart来查看apache2是否已经成功安装了,若没有,运行sudo apt-get install apache2
2. 安装gitweb
sudo apt-get install gitweb
运行之后会自动创建/var/www/gitweb和/etc/gitweb.conf # 配置文件, 如果未生成/var/www/gitweb这个目录,则需要克隆git源码,再拷贝其中的 gitweb 文件夹到 /var/www/,git clone git://git.kernel.org/pub/scm/git/git.git
3. 修改配置文件/etc/gitweb.conf,指定gitweb里需要显示的版本库的路径
$projectroot = /home/git/repositories
4. 手工创建一个文件/etc/apache2/conf.d/gitweb, 内容如下:
Alias /gitweb /usr/share/gitweb
<Directory /usr/share/gitweb>
Options FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
</Directory>
5. 添加用户权限
sudo usermod -a -G git www-data
sudo chmod g+r /home/git/projects.list
sudo chmod -R g+rx /home/git/repositories
sudo service apache2 restart
其中www-data是apache2的运行用户,需要将其添加到git组中,并且
修改
.gitolite.rc
文件,设置$REPO_UMASK = 0027;这个是版本库中数据的缺省权限设置,0027对应的值是同组的用户也可读可执行。
6.
重启apache2查看界面http://localhost:8080/gitweb
这时有一个问题,并不是所有的git版本库我们都想开放给gitweb显示,比如管理员库gitolite-admin就不应该显示。解决的办法是修改配置文件/etc/gitweb.conf,设置$project_list = "/home/git/projects.list"。其中projects.list文件由gitolite管理,如果gitolite.conf对repo的定义如下:
repo myrep
RW = @all
R = gitweb
则myrep.git会被写入projects.list文件,否则不会写入。通过projects.list文件就可以控制哪些版本库显示出来,哪些不用。