Gitweb

来自 Arch Linux 中文维基

Gitweb 是 Git 自带的默认网络界面。

Gitweb 实际上原生支持 FCGI,因此无需将其包装成 CGI 脚本。[1]

安装[编辑 | 编辑源代码]

要安装 Gitweb,首先要安装 git网络服务器。如果想快速测试,请参阅 git instaweb 的帮助。否则,如果你想要一个全面的设置,请继续阅读。

以下所有示例都需要安装 perl-cgi 软件包。(FS#45431)。

配置网络服务器[编辑 | 编辑源代码]

Apache[编辑 | 编辑源代码]

将以下内容添加到 /etc/httpd/conf/httpd.conf 的末尾:

Alias /gitweb "/usr/share/gitweb"
<Directory "/usr/share/gitweb">
   DirectoryIndex gitweb.cgi
   Options ExecCGI
   Require all granted
   <Files gitweb.cgi>
   SetHandler cgi-script
   </Files>
   SetEnv  GITWEB_CONFIG  /etc/gitweb.conf
</Directory>

或者将其添加到另一个文件中,如 etc/httpd/conf/extra/gitweb.conf 然后在 httpd.conf 末尾添加以下内容:

# gitweb configuration
Include conf/extra/gitweb.conf

如果 Apache 拒绝显示 Gitweb,而是打印 perl 脚本的纯源代码,则很可能是 Apache 的配置不允许执行 CGI。请确保 httpd.conf 中的以下内容未被注释:

<IfModule !mpm_prefork_module>
   LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
   LoadModule cgi_module modules/mod_cgi.so
</IfModule>

然后重启 httpd.service 来应用这些更改。有关使用 Apache 执行 CGI 的更多详情,请参阅 https://httpd.apache.org/docs/2.4/howto/cgi.html。

Lighttpd[编辑 | 编辑源代码]

/etc/lighttpd/lighttpd.conf 中添加以下内容:

server.modules += ( "mod_alias", "mod_cgi", "mod_redirect", "mod_setenv" )
url.redirect += ( "^/gitweb$" => "/gitweb/" )
alias.url += ( "/gitweb/" => "/usr/share/gitweb/" )
$HTTP["url"] =~ "^/gitweb/" {
       setenv.add-environment = (
               "GITWEB_CONFIG" => "/etc/gitweb.conf",
               "PATH" => env.PATH
       )
       cgi.assign = ( ".cgi" => "" )
       server.indexfiles = ( "gitweb.cgi" )
}

然后重启 lighttpd.service 来应用这些更改。 您可能还需要在 mimetype.assign 行添加 ".css" => "text/css" 以便 GitWeb 正常显示。

Nginx[编辑 | 编辑源代码]

将此位置添加到 nginx 配置中(可能需要更改位置):

/etc/nginx/nginx.conf
location /gitweb.cgi {
    include fastcgi_params;
    gzip off;
    fastcgi_param   SCRIPT_FILENAME  /usr/share/gitweb/gitweb.cgi;
    fastcgi_param   GITWEB_CONFIG  /etc/gitweb.conf;
    fastcgi_pass    unix:/run/fcgiwrap.sock;
}

location / {
    root /usr/share/gitweb;
    index gitweb.cgi;
}

如果您遵循 Nginx#CGI 实现,请尝试将include fastcgi_params;替换为include fastcgi.conf;

配置 Gitweb[编辑 | 编辑源代码]

所有配置选项的列表,请参见 gitweb.conf(5)

基本配置[编辑 | 编辑源代码]

打开(如果不存在,则创建)文件 /etc/gitweb.conf,并将此内容放入其中:

/etc/gitweb.conf
# The directories where your projects are. Must not end with a slash.
our $projectroot = "/path/to/your/repositories"; 

# Base URLs for links displayed in the web interface.
our @git_base_url_list = qw(git://<your_server> http://git@<your_server>);

要启用 "blame" 视图(显示源文件中每一行的作者),请添加以下一行:

$feature{'blame'}{'default'} = [1];

配置完成后,重启网络服务器。

添加仓库[编辑 | 编辑源代码]

要添加版本库,请进入版本库文件夹,像这样创建版本库:

$ mkdir my_repository.git
$ git init --bare my_repository.git/
$ cd my_repository.git/
$ touch git-daemon-export-ok
$ echo "Short project's description" > description

接下来打开 gitweb.config 文件并添加以下内容:

gitweb.config
[gitweb]
owner = Your Name

这将填写 Gitweb 中的 "Owner" 字段。这不是必填项。

这里假定您希望将此仓库作为 "central" 仓库,将您的提交推送至此,因此 git-daemon-export-ok 和 --bare 的作用是将开销降至最低,并允许在此仓库上使用 git 守护进程。

这就是创建版本库的全部过程。现在你可以在 http://localhost/gitweb 上看到它了(假设一切顺利)。由于 Gitweb CGI 脚本只需读取版本库文件夹,因此无需为新版本库重启 Apache。

语法高亮[编辑 | 编辑源代码]

要在 Gitweb 上启用语法高亮,必须先安装 highlight 软件包:

安装 highlight 后,只需在 gitweb.conf 中添加此行即可:

$feature{'highlight'}{'default'} = [1];

保存文件后,高亮显示就会启用。

参见[编辑 | 编辑源代码]