章节 ▾ 第二版

4.7 服务器上的 Git - GitWeb

GitWeb

现在您已经拥有了对项目的基本读写和只读访问权限,您可能希望设置一个简单的基于 Web 的可视化工具。Git 自带了一个名为 GitWeb 的 CGI 脚本,有时会用于此目的。

The GitWeb web-based user interface
图 49. GitWeb 基于 Web 的用户界面

如果您想查看 GitWeb 在您的项目中的样子,Git 自带了一个命令,可以在您的系统上启动一个轻量级 Web 服务器(如 lighttpdwebrick)的临时实例。在 Linux 机器上,通常会安装 lighttpd,所以您可能可以通过在项目目录中输入 git instaweb 来运行它。如果您使用的是 macOS,Leopard 自带 Ruby,所以 webrick 可能是您的最佳选择。要使用非 lighttpd 处理程序启动 instaweb,您可以使用 --httpd 选项运行它。

$ git instaweb --httpd=webrick
[2009-02-21 10:02:21] INFO  WEBrick 1.3.1
[2009-02-21 10:02:21] INFO  ruby 1.8.6 (2008-03-03) [universal-darwin9.0]

这会在端口 1234 上启动一个 HTTPD 服务器,然后自动启动一个 Web 浏览器打开该页面。这对您来说非常简单。完成后,想要关闭服务器,可以使用 --stop 选项运行相同的命令。

$ git instaweb --httpd=webrick --stop

如果您想让 Web 界面始终在服务器上运行,供您的团队或您托管的开源项目使用,您需要将 CGI 脚本设置为由您的普通 Web 服务器提供服务。一些 Linux 发行版有一个 gitweb 包,您可以通过 aptdnf 进行安装,所以您可能想先尝试一下。我们将快速演示如何手动安装 GitWeb。首先,您需要获取 Git 源代码(GitWeb 附带),并生成自定义的 CGI 脚本。

$ git clone https://git.kernel.org/pub/scm/git/git.git
$ cd git/
$ make GITWEB_PROJECTROOT="/srv/git" prefix=/usr gitweb
    SUBDIR gitweb
    SUBDIR ../
make[2]: `GIT-VERSION-FILE' is up to date.
    GEN gitweb.cgi
    GEN static/gitweb.js
$ sudo cp -Rf gitweb /var/www/

请注意,您必须使用 GITWEB_PROJECTROOT 变量告诉命令在哪里可以找到您的 Git 存储库。现在,您需要让 Apache 为该脚本使用 CGI,为此您可以添加一个 VirtualHost。

<VirtualHost *:80>
    ServerName gitserver
    DocumentRoot /var/www/gitweb
    <Directory /var/www/gitweb>
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride All
        order allow,deny
        Allow from all
        AddHandler cgi-script cgi
        DirectoryIndex gitweb.cgi
    </Directory>
</VirtualHost>

同样,GitWeb 可以由任何支持 CGI 或 Perl 的 Web 服务器提供服务;如果您倾向于使用其他服务器,设置起来应该不难。此时,您应该能够访问 http://gitserver/ 在线查看您的存储库。