Git
英文 ▾ 主题 ▾ 最新版本 ▾ gitweb.conf 最后更新于 2.44.0

名称

gitweb.conf - Gitweb(Git Web 界面)配置文件

概要

/etc/gitweb.conf, /etc/gitweb-common.conf, $GITWEBDIR/gitweb_config.perl

描述

用于通过 Web 查看 Git 存储库的 gitweb CGI 脚本使用 perl 脚本片段作为其配置文件。您可以使用 "our $variable = value" 设置变量;从 "#" 字符到行尾的文本将被忽略。有关详细信息,请参阅 perlsyn(1)。

示例

# gitweb configuration file for http://git.example.org
#
our $projectroot = "/srv/git"; # FHS recommendation
our $site_name = 'Example.org >> Repos';

配置文件用于覆盖在生成 gitweb.cgi 脚本时内置到 gitweb 中的默认设置。

虽然可以简单地修改 gitweb CGI 本身的配置设置,但这些更改在升级后会丢失。配置设置也可以放在与 CGI 脚本相同的目录中的文件中,默认名称为 gitweb_config.perl — 允许通过使用符号链接创建多个具有不同配置的 gitweb 实例。

请注意,一些配置可以在每个存储库而不是整个 gitweb 范围内控制:请参阅 gitweb[1] 手册页上的“每个存储库的 gitweb 配置”小节。

讨论

Gitweb 按以下顺序从以下来源读取配置数据

  • 内置值(一些在构建阶段设置),

  • 通用的系统范围配置文件(默认为 /etc/gitweb-common.conf),

  • 要么是每个实例的配置文件(默认为与安装的 gitweb 相同目录中的 gitweb_config.perl),要么如果不存在,则回退到系统范围的配置文件(默认为 /etc/gitweb.conf)。

在后面的配置文件中获得的值会覆盖在前面的序列中获得的值。

通用系统范围配置文件、回退系统范围配置文件和每个实例配置文件的位置是在编译时使用构建时 Makefile 配置变量定义的,分别是 GITWEB_CONFIG_COMMONGITWEB_CONFIG_SYSTEMGITWEB_CONFIG

您也可以在运行时通过将以下环境变量设置为非空值来覆盖 gitweb 配置文件的位置:GITWEB_CONFIG_COMMONGITWEB_CONFIG_SYSTEMGITWEB_CONFIG

配置文件的语法是 Perl 语法,因为这些文件是通过将它们作为 Perl 代码片段(gitweb 本身用它编写的语言)来处理的。变量通常使用 our 限定符(如 "our $variable = <value>;")来设置,以避免在 gitweb 的新版本不再使用某个变量并因此停止声明它时出现语法错误。

您可以使用 read_config_file() 子例程包含其他配置文件。例如,您可能希望将与通过 Gitolite(一种 Git 存储库管理工具)查看存储库的访问控制相关的 gitweb 配置放在一个单独的文件中,例如 /etc/gitweb-gitolite.conf。要包含它,请将

read_config_file("/etc/gitweb-gitolite.conf");

放置在使用的 gitweb 配置文件中,例如在每个安装的 gitweb 配置文件中。请注意,read_config_file() 会自行检查它读取的文件是否存在,如果文件不存在则不执行任何操作。它还会处理包含文件中出现的错误。

没有配置文件的默认配置可能对于某些安装来说运行良好。尽管如此,配置文件对于以多种方式自定义或调整 gitweb 的行为很有用,并且某些可选功能除非使用可配置的 %features 变量显式启用,否则将不会存在(另请参阅下面的“配置 gitweb 功能”部分)。

配置变量

一些配置变量在构建 gitweb 时会设置其默认值(嵌入到 CGI 脚本中) — 如果是这种情况,则会在其描述中说明这一点。有关构建和安装 gitweb 的说明,请参阅 gitweb 的 INSTALL 文件。

存储库的位置

下面描述的配置变量控制 gitweb 如何查找 Git 存储库,以及如何显示和访问存储库。

另请参阅 gitweb[1] 手册页上的“存储库”以及后面的部分。

$projectroot

将附加到项目路径的绝对文件系统路径;存储库的路径为 $projectroot/$project。在安装期间设置为 $GITWEB_PROJECTROOT。此变量必须设置正确,以便 gitweb 找到存储库。

例如,如果 $projectroot 通过在 gitweb 配置文件中添加以下内容设置为 "/srv/git"

our $projectroot = "/srv/git";

那么

http://git.example.com/gitweb.cgi?p=foo/bar.git

以及它的 path_info 等效项

http://git.example.com/gitweb.cgi/foo/bar.git

将映射到文件系统上的路径 /srv/git/foo/bar.git

$projects_list

列出项目的纯文本文件的名称,或要扫描以查找项目的目录的名称。

项目列表文件应每行列出一个项目,每行具有以下格式

<URI-encoded filesystem path to repository> SP <URI-encoded repository owner>

此变量的默认值由安装时的 GITWEB_LIST makefile 变量确定。如果此变量为空,gitweb 将回退到扫描 $projectroot 目录以查找存储库。

$project_maxdepth

如果 $projects_list 变量未设置,gitweb 将递归地扫描文件系统以查找 Git 存储库。$project_maxdepth 用于限制相对于 $projectroot(起点)的遍历深度;这意味着距离 $projectroot$project_maxdepth 更远的目录将被跳过。

它纯粹是性能优化,最初是为了 MacOS X 而设计的,在 MacOS X 上,递归目录遍历很慢。Gitweb 会遵循符号链接,但会检测循环,忽略任何重复的文件和目录。

此变量的默认值由构建时配置变量 GITWEB_PROJECT_MAXDEPTH 确定,默认值为 2007。

$export_ok

仅当此文件存在(在存储库中)时才显示存储库。仅当此变量求值为真时有效。可以在构建 gitweb 时通过设置 GITWEB_EXPORT_OK 来设置。此路径相对于 GIT_DIR。git-daemon[1] 使用 git-daemon-export-ok,除非以 --export-all 方式启动。默认情况下,此变量未设置,这意味着此功能已关闭。

$export_auth_hook

用于确定应显示哪些存储库的函数。此子例程应接受一个参数,即项目的完整路径,如果它返回真,则该项目将包含在项目列表中,并且只要它满足 $export_ok$projects_list$projects_maxdepth 描述的其他要求,就可以通过 gitweb 访问该项目。示例

our $export_auth_hook = sub { return -e "$_[0]/git-daemon-export-ok"; };

虽然上面的操作可以使用 $export_ok 来完成

our $export_ok = "git-daemon-export-ok";

如果未设置(默认),则意味着此功能已禁用。

另请参阅 gitweb[1] 手册页上的“控制对 Git 存储库的访问”小节中更详细的示例。

$strict_export

仅允许查看也在概述页面上显示的存储库。例如,这将使 $export_ok 文件决定存储库是否可用,而不仅仅是它是否显示。如果 $projects_list 指向包含项目列表的文件,则只有那些列出的存储库才能通过 gitweb 访问。可以在构建 gitweb 时通过 GITWEB_STRICT_EXPORT 来设置。默认情况下,此变量未设置,这意味着您可以直接访问那些隐藏在项目列表页面中的存储库(例如,它们未列在 $projects_list 文件中)。

查找文件

以下配置变量告诉 gitweb 在哪里查找文件。这些变量的值是文件系统上的路径。

$GIT

要使用的核心 git 可执行文件。默认情况下设置为 $GIT_BINDIR/git,该变量又默认设置为 $(bindir)/git。如果您使用从二进制包安装的 Git,则通常应将其设置为“/usr/bin/git”。如果您的 Web 服务器具有合理的 PATH,则这可以是“git”;出于安全考虑,最好使用指向 git 二进制文件的绝对路径。如果您安装了多个 Git 版本,则可以使用它来选择要使用哪个版本。必须(正确地)设置此变量才能使 gitweb 正常工作。

$mimetypes_file

用于(基于文件名扩展名)猜测 MIME 类型(在尝试 /etc/mime.types 之前)的文件。**注意**,此路径(如果为相对路径)将作为相对于当前 Git 存储库的路径,而不是相对于 CGI 脚本的路径。如果未设置,则仅使用 /etc/mime.types(如果文件系统上存在)。如果没有找到 mimetypes 文件,则禁用基于文件扩展名的 MIME 类型猜测。默认情况下未设置。

$highlight_bin

要使用的 highlight 可执行文件路径(它必须来自 http://andre-simon.de/zip/download.php,因为对参数和输出有假设)。默认情况下设置为highlight;如果它未安装在您的 Web 服务器的 PATH 上,则将其设置为指向 highlight 可执行文件的完整路径。请注意,必须设置highlight功能才能使 gitweb 实际使用语法高亮。

**注意**:要高亮显示文件,必须检测其语法类型,并且该语法必须受“highlight”支持。默认的语法检测非常少,并且有许多支持的语法类型默认情况下没有检测到。有三种方法可以添加语法检测。第一和第二优先级是 %highlight_basename%highlight_ext,它们根据基本名称(完整文件名,例如“Makefile”)和扩展名(例如“sh”)进行检测。这些哈希的键分别是基本名称和扩展名,而给定键的值是通过 --syntax <syntax> 传递给“highlight”的语法的名称。最后一个优先级是 Shebang 正则表达式的“highlight”配置,用于根据文件的第一行检测语言(例如,匹配行“#!/bin/bash”)。有关更多详细信息,请参阅 highlight 文档和 /etc/highlight/filetypes.conf 中的默认配置。

例如,如果您托管的存储库使用“phtml”扩展名来表示 PHP 文件,并且您希望对这些文件进行正确的语法高亮显示,则可以在 gitweb 配置中添加以下内容

our %highlight_ext;
$highlight_ext{'phtml'} = 'php';

下面描述的配置变量配置了一些 gitweb 链接:它们的目标和外观(文本或图像),以及在何处查找页面先决条件(样式表、favicon、图像、脚本)。通常,它们保留默认值,@stylesheets 变量可能除外。

@stylesheets

样式表的 URI 列表(相对于页面的基本 URI)。您可以指定多个样式表,例如使用“gitweb.css”作为基本样式表,并在单独的样式表中进行站点特定修改,以便于升级 gitweb。例如,您可以通过将以下内容放在

push @stylesheets, "gitweb-site.css";

gitweb 配置文件中添加一个 site 样式表。这些值为相对路径时,相对于 gitweb 的基本 URI。

此列表应包含 gitweb 的标准样式表的 URI。gitweb 样式表的默认 URI 可以在构建时使用 GITWEB_CSS makefile 变量设置。其默认值为 static/gitweb.css(或 static/gitweb.min.css,如果定义了 CSSMIN 变量,即在构建期间使用了 CSS 压缩器)。

**注意**:还存在一个旧的 $stylesheet 配置变量,该变量由旧版本的 gitweb 使用。如果定义了 $stylesheet 变量,则 gitweb 仅使用此变量指定的 CSS 样式表。

指向您在 Web 服务器上放置git-logo.png 的位置,或者更通用地说,指向 logo 的 URI(大小为 72x27)。此图像显示在每个 gitweb 页面右上角,并用作 Atom 提要的 logo。相对于 gitweb 的基本 URI(作为路径)。可以在构建 gitweb 时使用 GITWEB_LOGO 变量进行调整。默认情况下设置为 static/git-logo.png

$favicon

指向您在 Web 服务器上放置git-favicon.png 的位置,或者更通用地说,指向 favicon 的 URI,它将作为“image/png”类型提供服务。支持 favicon(网站图标)的 Web 浏览器可能会在浏览器 URL 栏以及书签中网站名称旁边显示它们。相对于 gitweb 的基本 URI。可以在构建时使用 GITWEB_FAVICON 变量进行调整。默认情况下设置为 static/git-favicon.png

$javascript

指向您在 Web 服务器上放置gitweb.js 的位置,或者更通用地说,指向 gitweb 使用的 JavaScript 代码的 URI。相对于 gitweb 的基本 URI。可以在构建时使用 GITWEB_JS 构建时配置变量进行设置。

默认值为 static/gitweb.jsstatic/gitweb.min.js(如果定义了 JSMIN 构建变量,即在构建时使用了 JavaScript 压缩器)。**注意**,此单个文件是从多个独立的 JavaScript “模块”生成的。

所有页面顶部主页链接的目标(视图“面包屑”的第一部分)。默认情况下,它设置为当前页面的绝对 URI(设置为 $my_uri 变量的值,或者如果 $my_uri 未定义或为空字符串,则设置为“/”)。

$home_link_str

所有页面顶部指向 $home_link 的“主页链接”的标签(通常是主 gitweb 页面,其中包含项目列表)。它用作 gitweb 的“面包屑轨迹”的第一个组件:<home-link> / <project> / <action>。可以在构建时使用 GITWEB_HOME_LINK_STR 变量进行设置。默认情况下,它设置为“projects”,因为此链接指向项目列表。另一个流行的选择是将其设置为站点的名称。请注意,它被视为原始 HTML,因此不应从不受信任的来源设置。

@extra_breadcrumbs

要添加到面包屑轨迹开头的额外链接,在主页链接之前,指向逻辑上“高于”gitweb 项目列表的页面,例如托管 gitweb 服务器的组织和部门。列表中的每个元素都是对数组的引用,其中元素 0 是链接文本(相当于 $home_link_str),元素 1 是目标 URL(相当于 $home_link)。

例如,以下设置会生成类似“home / dev / projects / …​”的面包屑轨迹,其中“projects”是主页链接。

    our @extra_breadcrumbs = (
      [ 'home' => 'https://www.example.org/' ],
      [ 'dev'  => 'https://dev.example.org/' ],
    );
$logo_url
$logo_label

Git logo 链接的 URI 和标签(标题)(或您的站点 logo,如果您选择使用不同的 logo 图像)。默认情况下,它们都引用 Git 主页,https://git-scm.cn;在过去,它们指向 Git 文档,地址为 https://www.kernel.org.

更改 gitweb 的外观

您可以使用下面描述的变量调整 gitweb 生成的页面的外观。您可以更改站点名称,为所有页面添加公共页眉和页脚,以及在 gitweb 主页(即项目列表页面)上添加此 gitweb 安装的描述等。

$site_name

您的站点或组织的名称,将在页面标题中显示。将其设置为描述性内容,以便更清晰地创建书签等。如果此变量未设置或为空,则 gitweb 使用 SERVER_NAME CGI 环境变量的值,将站点名称设置为“$SERVER_NAME Git”,或者如果此变量未设置(例如,如果将 gitweb 作为独立脚本运行),则设置为“Untitled Git”。

可以在构建时使用 GITWEB_SITENAME 设置。默认情况下未设置。

$site_html_head_string

要包含在每个页面<head>部分中的 HTML 片段。可以在构建时使用 GITWEB_SITE_HTML_HEAD_STRING 设置。没有默认值。

$site_header

包含要包含在每个页面顶部的 HTML 的文件的名称。相对于包含gitweb.cgi 脚本的目录。可以在构建时使用 GITWEB_SITE_HEADER 设置。没有默认值。

包含要包含在每个页面底部的 HTML 的文件的名称。相对于包含gitweb.cgi 脚本的目录。可以在构建时使用 GITWEB_SITE_FOOTER 设置。没有默认值。

$home_text

HTML 文件的名称,如果存在,它将包含在 gitweb 项目概述页面(“projects_list”视图)上。相对于包含 gitweb.cgi 脚本的目录。默认值可以在构建时使用 GITWEB_HOMETEXT 变量进行调整。默认情况下设置为indextext.html

$projects_list_description_width

项目列表的“描述”列的宽度(以字符计)。较长的描述将被截断(尝试在单词边界处截断);完整的描述在title属性中可用(通常在鼠标悬停时显示)。默认值为 25,如果您使用较长的项目描述,这可能太小了。

$default_projects_order

项目列表页面上项目排序的默认值,这意味着如果您没有显式排序项目列表(如果 URL 中没有“o”CGI 查询参数),则使用该排序。有效值为“none”(未排序)、“project”(按项目名称排序,即相对于 $projectroot 的存储库路径)、“descr”(项目描述)、“owner”和“age”(按最新提交的日期排序)。

默认值为“project”。未知值意味着未排序。

更改 gitweb 的行为

这些配置变量控制内部 gitweb 行为。

$default_blob_plain_mimetype

blob_plain(原始)视图的默认 MIME 类型,如果 MIME 类型检查未生成其他类型;默认值为“text/plain”。Gitweb 根据其文件名的扩展名猜测要显示的文件的 MIME 类型,使用 $mimetypes_file(如果设置且文件存在)和 /etc/mime.types 文件(请参阅mime.types(5) 手册页;gitweb 仅支持文件名扩展名规则)。

$default_text_plain_charset

文本文件的默认字符集。如果未设置,则使用 Web 服务器配置。默认情况下未设置。

$fallback_encoding

当一行包含非 UTF-8 字符时,Gitweb 假设此字符集。回退解码在没有错误检查的情况下使用,因此它甚至可以是“utf-8”。该值必须是有效的编码;有关列表,请参阅 **Encoding::Supported**(3pm) 手册页。默认值为“latin1”,即“iso-8859-1”。

@diff_opts

git-diff 和 git-diff-tree 的重命名检测选项。默认值为 ('-M');将其设置为 ('-C') 或 ('-C', '-C') 以检测复制,或将其设置为 () 即空列表,如果你不希望进行重命名检测。

注意 重命名,尤其是复制检测可能会非常占用 CPU。另请注意,非 Git 工具可能无法使用上述选项生成的补丁,尤其是在涉及文件复制 ('-C') 或交叉重命名 ('-B') 时。

一些可选功能和策略

大多数功能都通过 %feature 哈希配置;但是,一些额外的 gitweb 功能可以通过下面描述的变量打开和配置。除了控制 gitweb 外观之外,此列表还包含配置 gitweb 管理方面的变量(例如跨站点脚本防御;诚然,这会影响“摘要”页面的外观或负载限制)。

@git_base_url_list

Git 基本 URL 列表。这些 URL 用于生成描述从哪里获取项目的 URL,这些 URL 显示在项目摘要页面上。完整的获取 URL 是“$git_base_url/$project”,适用于此列表中的每个元素。你可以设置多个基本 URL(例如,一个用于 git:// 协议,一个用于 http:// 协议)。

注意,每个存储库的配置可以在 $GIT_DIR/cloneurl 文件中设置,也可以在项目配置中作为多值 gitweb.url 配置变量的值设置。每个存储库的配置优先于由 @git_base_url_list 元素和项目名称组成的值。

你可以在构建时通过设置 GITWEB_BASE_URL 构建时配置变量来设置单个值(此列表中的单个条目/项)。默认情况下它被设置为 (),即空列表。这意味着 gitweb 不会尝试根据项目名称创建项目 URL(以获取)。

$projects_list_group_categories

是否在项目列表页面上启用按类别对项目进行分组。项目的类别由每个存储库配置中的 $GIT_DIR/category 文件或 gitweb.category 变量确定。默认情况下禁用(设置为 0)。

$project_list_default_category

未指定类别的项目的默认类别。如果将其设置为空字符串,则此类项目将保持未分类并列在顶部,在分类项目之上。仅在启用项目类别时使用,这意味着如果 $projects_list_group_categories 为真。默认情况下设置为 ""(空字符串)。

$prevent_xss

如果为真,则一些 gitweb 功能将被禁用以防止存储库中的内容发起跨站点脚本 (XSS) 攻击。如果你不信任存储库的内容,请将其设置为 true。默认情况下为假(设置为 0)。

$maxload

用于设置我们将继续响应 gitweb 查询的最大负载。如果服务器负载超过此值,则 gitweb 将返回“503 服务不可用”错误。如果 gitweb 无法确定其值,则服务器负载被视为 0。目前它仅在 Linux 上有效,它使用 /proc/loadavg;那里的负载是系统上的活动任务数(实际运行的进程)在过去一分钟的平均值。

$maxload 设置为未定义值(undef)以关闭此功能。默认值为 300。

$omit_age_column

如果为真,则省略项目列表页面上具有最新提交日期的列。它可以节省一些 I/O 和每个存储库的 fork。

$omit_owner

如果为真,则会阻止显示有关存储库所有者的信息。

$per_request_config

如果将其设置为代码引用,则它将在每个请求中运行一次。你可以用这种方式设置每个会话更改的配置部分。例如,一个人可能在 gitweb 配置文件中使用以下代码

our $per_request_config = sub {
	$ENV{GL_USER} = $cgi->remote_user || "gitweb";
};

如果 $per_request_config 不是代码引用,则它将被解释为布尔值。如果为真,gitweb 将在每次请求时处理配置文件,如果为假,gitweb 将仅在每次执行时处理配置文件一次。默认情况下为真(设置为 1)。

注意$my_url$my_uri$base_url 在每次请求之前都将被其默认值覆盖,因此如果你想更改它们,请确保将此变量设置为 true 或影响所需更改的代码引用。

此变量仅在使用持久 Web 环境时才重要,这些环境使用单个 gitweb 实例(如 mod_perl、FastCGI 或 Plackup)来服务多个请求。

其他变量

通常你不应该需要更改(调整)下面描述的任何配置变量;它们应该由 gitweb 自动设置为正确的值。

$version

Gitweb 版本,在从 gitweb.perl 创建 gitweb.cgi 时自动设置。如果你运行的是修改后的 gitweb,你可能想修改它,例如

our $version .= " with caching";

如果你运行具有缓存支持的修改后的 gitweb 版本。此变量纯粹用于信息,例如用于 HTML 标题中的“生成器”元标题。

$my_url
$my_uri

gitweb 脚本的完整 URL 和绝对 URL;在早期版本的 gitweb 中,你可能需要设置这些变量,但现在应该没有必要这样做。如果你仍然需要设置它们,请参阅 $per_request_config

$base_url

gitweb 生成的页面中相对 URL 的基本 URL(例如,$logo$favicon@stylesheets,如果它们是相对 URL),仅对于具有非空 PATH_INFO 的 URL <base href="$base_url"> 才会使用和需要。通常 gitweb 会正确设置其值,并且没有必要设置此变量,例如设置为 $my_uri 或“/”。如果你仍然需要覆盖它,请参阅 $per_request_config

配置 GITWEB 功能

许多 gitweb 功能可以使用 %feature 哈希启用(或禁用)和配置。gitweb 功能的名称是此哈希的键。

每个 %feature 哈希元素都是一个哈希引用,并具有以下结构

"<feature-name>" => {
	"sub" => <feature-sub-(subroutine)>,
	"override" => <allow-override-(boolean)>,
	"default" => [ <options>... ]
},

一些功能无法按项目覆盖。对于这些功能,相应的 %feature 哈希元素的结构形式更简单

"<feature-name>" => {
	"override" => 0,
	"default" => [ <options>... ]
},

可以看出它缺少“sub”元素。

功能配置的每个部分的含义将在下面描述

default

功能参数(如果有)的列表(数组引用),也用于切换(启用或禁用)给定功能。

注意,它目前始终是数组引用,即使功能不接受任何配置参数,并且“default”仅用于打开或关闭它。在这种情况下,你可以通过将此元素设置为 [1] 来打开功能,并通过将其设置为 [0] 来关闭功能。另请参阅“示例”部分中关于“blame”功能的段落。

要禁用接受参数(可配置)的功能,你需要将此元素设置为空列表,即 []

override

如果此字段具有真值,则给定功能是可覆盖的,这意味着它可以在每个存储库的基础上配置(或启用/禁用)。

通常,给定的“<feature>”可以通过每个存储库的 Git 配置文件中的 gitweb.<feature> 配置变量进行配置。

注意 默认情况下没有功能是可覆盖的。

sub

实现的内部细节。重要的是,如果此字段不存在,则不支持对给定功能的每个存储库的覆盖。

你不应该在 gitweb 配置文件中更改它。

%feature 中的功能

可以通过 %feature 哈希配置的 gitweb 功能列在下面。这应该是一个完整的列表,但最终的权威和完整列表位于 gitweb.cgi 源代码中,其中的功能在注释中进行了描述。

blame

启用“blame”和“blame_incremental” blob 视图,显示每个行的最后一次修改它的提交;请参阅 git-blame[1]。这可能会非常占用 CPU,因此默认情况下处于禁用状态。

此功能可以通过存储库的 gitweb.blame 配置变量(布尔值)在每个存储库的基础上配置。

snapshot

启用和配置“snapshot”操作,该操作允许用户下载任何树或提交的压缩存档,如 git-archive[1] 所生成,并可能额外压缩。如果你有大型项目,这可能会产生高流量。

'default' 的值是你想提供的快照格式名称的列表,在 %known_snapshot_formats 哈希中定义。支持的格式包括“tgz”、“tbz2”、“txz”(gzip/bzip2/xz 压缩的 tar 存档)和“zip”;请参阅 gitweb 源代码以获取最终列表。默认情况下,仅提供“tgz”。

此功能可以通过存储库的 gitweb.snapshot 配置变量在每个存储库的基础上配置,该变量包含格式的逗号分隔列表或“none”以禁用快照。未知值将被忽略。

grep

启用 grep 搜索,它将列出当前选择的树(目录)中包含给定字符串的文件;请参阅 git-grep[1]。这可能会占用 CPU,当然了。默认情况下启用。

此功能可以通过存储库的 gitweb.grep 配置变量(布尔值)在每个存储库的基础上配置。

pickaxe

启用所谓的 pickaxe 搜索,它将列出在文件中引入或删除给定字符串的提交。这可能是“blame”操作的实用且更快的替代方案,但它仍然可能占用 CPU。默认情况下启用。

pickaxe 搜索在 git-log[1] 中有描述(-S<string> 选项的描述,它引用了 gitdiffcore[7] 中的 pickaxe 条目以获取更多详细信息)。

此功能可以通过设置存储库的 gitweb.pickaxe 配置变量(布尔值)在每个存储库的基础上配置。

show-sizes

启用在“tree”视图中以单独的列显示 blob(普通文件)的大小,类似于 ls -l 的功能;请参阅 git-ls-tree[1] 手册页中 -l 选项的描述。这会花费一些 I/O。默认情况下启用。

此功能可以通过存储库的 gitweb.showSizes 配置变量(布尔值)在每个存储库的基础上配置。

patches

启用并配置“补丁”视图,该视图以电子邮件(纯文本)输出格式显示提交列表;另请参见 git-format-patch[1]。该值是在“补丁”视图中生成的补丁集中的最大补丁数。将default字段设置为包含单个项目的列表或空列表以禁用补丁视图,或设置为包含单个负数的列表以删除任何限制。默认值为 16。

此功能可以通过存储库的gitweb.patches配置变量(整数)在每个存储库的基础上进行配置。

avatar

头像支持。启用此功能后,诸如“shortlog”或“commit”之类的视图将显示与每个提交者和作者的电子邮件关联的头像。

当前可用的提供商是“gravatar”“picon”。一次只能选择一个提供商(default是一个元素列表)。如果指定了未知提供商,则该功能将被禁用。注意,一些提供商可能需要安装额外的 Perl 包;有关更多详细信息,请参见gitweb/INSTALL

此功能可以通过存储库的gitweb.avatar配置变量在每个存储库的基础上进行配置。

另请参见%avatar_size,其中包含图标和头像的像素大小(“default”用于单行,如“log”和“shortlog”,“double”用于双行,如“commit”,“commitdiff”或“tag”)。如果默认字体大小或行高发生变化(例如,通过在@stylesheets中添加额外的 CSS 样式表),则可能需要更改这些值。

email-privacy

从生成的 HTML 等内容中删除电子邮件地址。这会隐藏从 Git 日志的作者/提交者和评论部分检索到的电子邮件地址。它的目的是阻止收集和滥用地址的网络爬虫。此类爬虫可能不遵守 robots.txt。请注意,用户和用户工具也会看到被屏蔽的地址。如果 Gitweb 不是工作流程中的最后一步,那么后续步骤可能会因为接收到的屏蔽信息而出现故障。默认情况下禁用。

highlight

“blob”视图中的服务器端语法高亮支持。它需要$highlight_bin程序可用(参见上面“配置变量”部分中此变量的描述),因此默认情况下禁用。

此功能可以通过存储库的gitweb.highlight配置变量(布尔值)在每个存储库的基础上进行配置。

remote_heads

启用在“heads”列表中显示远程头部(远程跟踪分支)。在大多数情况下,远程跟踪分支列表是不必要的内部私有详细信息,因此此功能默认情况下禁用。 git-instaweb[1]通常用于浏览本地存储库,它启用并使用此功能。

此功能可以通过存储库的gitweb.remote_heads配置变量(布尔值)在每个存储库的基础上进行配置。

剩余的功能无法在每个项目的基础上覆盖。

启用文本搜索,这将列出匹配作者、提交者或提交文本到给定字符串的提交;参见 git-log[1] 手册页中--author--committer--grep选项的描述。默认情况下启用。

不支持项目特定的覆盖。

forks

如果启用此功能,gitweb 将认为项目根目录(basename)的子目录中的项目是现有项目的派生版本。对于每个项目$projname.git$projname/目录及其子目录中的项目不会显示在主项目列表中。相反,$projname旁边会显示一个“+”标记,它链接到一个“forks”视图,该视图列出所有派生版本($projname/子目录中的所有项目)。此外,项目摘要页还链接到项目的“forks”视图。

如果项目列表来自文件($projects_list指向一个文件),则只有当它们在该文件中位于主项目之后时,才会识别派生版本。

不支持项目特定的覆盖。

actions

将自定义链接插入所有项目页面的操作栏。这允许您链接到与 gitweb 集成的第三方脚本。

“default”值包含一个三元组列表,形式为("<label>", "<link>", "<position>"),其中“position”是在其后插入链接的标签,“link”是一个格式字符串,其中%n展开为项目名称,%f展开为项目在文件系统中的路径(即“$projectroot/$project”),%h展开为当前哈希('h' gitweb 参数),%b展开为当前哈希基('hb' gitweb 参数);%%展开为'%'。

例如,在本页编写时,https://repo.or.cz Git 托管站点将其设置为以下内容,以启用图形日志(使用第三方工具git-browser

$feature{'actions'}{'default'} =
	[ ('graphiclog', '/git-browser/by-commit.html?r=%n', 'summary')];

这会在“summary”链接之后添加一个标题为“graphiclog”的链接,链接到git-browser脚本,并将r=<project>作为查询参数传递。

不支持项目特定的覆盖。

timed

启用显示生成和显示每个页面所花费的时间以及 Git 命令数量(在页面页脚,即页面底部)。例如,页脚可能包含:“生成此页面花费了 6.53325 秒,执行了 13 个 Git 命令。”默认情况下禁用。

不支持项目特定的覆盖。

javascript-timezone

启用并配置通过 JavaScript 更改 gitweb 输出中日期的通用时区的能力。gitweb 输出中的日期包括“commit”、 “commitdiff”和“log”视图中的 authordate 和 committerdate,以及“tag”视图中的 taggerdate。默认情况下启用。

该值是一个包含三个值的列表:默认时区(如果客户端没有选择其他时区并将其保存到 cookie 中),存储所选时区的 cookie 名称,以及用于标记日期以进行操作的 CSS 类。如果要关闭此功能,请将“default”设置为空列表:[]

典型的 gitweb 配置文件只会更改起始(默认)时区,并将其他元素保留为其默认值

$feature{'javascript-timezone'}{'default'}[0] = "utc";

这里介绍的示例配置保证向后和向前兼容。

时区值可以是“local”(对于浏览器使用的本地时区)、“utc”(当禁用 JavaScript 或此功能时 gitweb 使用的时区),或者以“+/-HHMM”形式表示的数字时区,例如“+0200”。

不支持项目特定的覆盖。

extra-branch-refs

“refs”下将用作分支引用的其他目录的列表。例如,如果您有一个 Gerrit 设置,其中“refs/heads/”下的所有分支都是官方的、审查后的分支,而“refs/sandbox/”、“refs/wip”和“refs/other”下的分支是用户分支,其中权限更广泛,那么您可能希望将此变量设置为如下

$feature{'extra-branch-refs'}{'default'} =
	['sandbox', 'wip', 'other'];

在将 $feature{extra-branch-refs}{override} 设置为 true 后,可以通过存储库的gitweb.extraBranchRefs配置变量(包含一个空格分隔的引用列表)在每个存储库的基础上配置此功能。一个例子

[gitweb]
	extraBranchRefs = sandbox wip other

gitweb.extraBranchRefs 实际上是一个多值配置变量,因此以下示例也是正确的,并且结果与上面的代码段相同

[gitweb]
	extraBranchRefs = sandbox
	extraBranchRefs = wip other

指定不通过“git check-ref-format”检查的引用是错误的。重复的值将被过滤掉。

EXAMPLES

要启用 blame、pickaxe 搜索和快照支持(允许“tar.gz”和“zip”快照),同时允许各个项目关闭它们,请将以下内容放在您的 GITWEB_CONFIG 文件中

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

$feature{'pickaxe'}{'default'} = [1];
$feature{'pickaxe'}{'override'} = 1;

$feature{'snapshot'}{'default'} = ['zip', 'tgz'];
$feature{'snapshot'}{'override'} = 1;

如果您允许覆盖快照功能,则可以指定全局禁用的快照格式。您还可以添加任何您想要的命令行选项(例如设置压缩级别)。例如,您可以禁用 Zip 压缩快照,并将gzip(1) 设置为在级别 6 运行,方法是在您的 gitweb 配置文件中添加以下行

$known_snapshot_formats{'zip'}{'disabled'} = 1;
$known_snapshot_formats{'tgz'}{'compressor'} = ['gzip','-6'];

BUGS

如果回退配置文件(/etc/gitweb.conf)和用于覆盖其位置的环境变量(GITWEB_CONFIG_SYSTEM)的名称反映了它们的“回退”作用,那么调试会更容易。保留当前名称以避免破坏正常的工作设置。

ENVIRONMENT

可以使用以下环境变量覆盖每个实例和系统范围的配置文件的位置

GITWEB_CONFIG

设置每个实例配置文件的位置。

GITWEB_CONFIG_SYSTEM

设置回退系统范围配置文件的位置。仅当不存在每个实例的配置文件时才会读取此文件。

GITWEB_CONFIG_COMMON

设置通用系统范围配置文件的位置。

FILES

gitweb_config.perl

这是每个实例配置文件的默认名称。此文件的格式在上面描述。

/etc/gitweb.conf

这是回退系统范围配置文件的默认名称。仅当找不到每个实例的配置文件时,才会使用此文件。

/etc/gitweb-common.conf

这是通用系统范围配置文件的默认名称。

SEE ALSO

gitweb/README, gitweb/INSTALL

GIT

git[1] 套件的一部分

scroll-to-top