简体中文 ▾ 主题 ▾ 最新版本 ▾ gitweb.conf 最后更新于 2.50.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 功能”部分),否则将不会出现。

配置变量

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

仓库位置

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

另请参阅 gitweb[1] 手册页中的“仓库”及其后续小节。

$projectroot

将添加到项目路径前的绝对文件系统路径;仓库的路径是 $projectroot/$project。在安装期间设置为 $GITWEB_PROJECTROOT。此变量必须正确设置,gitweb 才能找到仓库。

例如,如果通过将以下内容放入 gitweb 配置文件中,将 $projectroot 设置为 "/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 而设计,因为其递归目录遍历速度较慢。Gitweb 遵循符号链接,但它会检测循环,忽略任何重复的文件和目录。

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

$export_ok

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

$export_auth_hook

用于确定应显示哪些仓库的函数。此子例程应接受一个参数,即项目的完整路径,如果它返回 true,则该项目将包含在项目列表中,并且只要它满足 $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

在尝试 /etc/mime.types 之前,用于(基于文件名扩展名的)MIME 类型猜测的文件。**注意**,如果此路径是相对路径,则它相对于当前 Git 仓库,而不是 CGI 脚本。如果未设置,则仅使用 /etc/mime.types(如果文件系统上存在)。如果未找到 MIME 类型文件,则禁用基于文件扩展名的 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”的语法名称。最后一个优先级是“highlight”的 Shebang 正则表达式配置,用于根据文件中的第一行检测语言(例如,匹配行“#!/bin/bash”)。有关详细信息,请参阅 highlight 文档和 /etc/highlight/filetypes.conf 中的默认配置。

例如,如果您托管的仓库对 PHP 文件使用“phtml”扩展名,并且您希望这些文件具有正确的语法高亮显示,则可以将以下内容添加到 gitweb 配置中

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

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

@stylesheets

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

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

在 gitweb 配置文件中。那些是相对路径的值是相对于 gitweb 的基本 URI 的。

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

**注意**:还有一个遗留的 $stylesheet 配置变量,旧版 gitweb 使用它。如果定义了 $stylesheet 变量,则 gitweb 仅使用此变量指定的 CSS 样式表。

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

$favicon

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

$javascript

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

默认值是 static/gitweb.js,或者如果定义了 JSMIN 构建变量(即在构建时使用了 JavaScript 压缩器),则为 static/gitweb.min.js。**请注意**,此单个文件是由多个独立的 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 标志链接(或您的站点标志,如果您选择使用不同的标志图像)的 URI 和标签(标题)。默认情况下,它们都指向 Git 主页:https://git-scm.cn;过去,它们指向 https://linuxkernel.org.cn 上的 Git 文档。

更改 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

如果 MIME 类型检查未导致其他类型,则 blob_plain(原始)视图的默认 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 为 true 时。默认设置为“”(空字符串)。

$prevent_xss

如果为 true,则禁用某些 gitweb 功能以防止仓库中的内容发起跨站脚本 (XSS) 攻击。如果您不信任仓库的内容,请将其设置为 true。默认情况下为 false(设置为 0)。

$maxload

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

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

$omit_age_column

如果为 true,则在项目列表页面上省略显示最新提交日期的列。这可以节省一些 I/O 和每个仓库的一个 fork。

$omit_owner

如果为 true,则阻止显示有关仓库所有者的信息。

$per_request_config

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

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

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

**注意**:$my_url$my_uri$base_url 在每次请求之前都会被其默认值覆盖,因此如果您想更改它们,请务必将此变量设置为 true 或一个实现所需更改的代码引用。

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

其他变量

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

$version

Gitweb 版本,在从 gitweb.perl 创建 gitweb.cgi 时自动设置。如果您正在运行修改过的 gitweb,例如,您可能需要修改它

our $version .= " with caching";

如果您运行的是支持缓存的修改版 gitweb。此变量纯粹是信息性的,例如用于 HTML 头部中的“generator”元头部。

$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

如果此字段的值为 true,则给定功能是可覆盖的,这意味着可以根据每个仓库进行配置(或启用/禁用)。

通常,给定的“<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

启用和配置“patches”视图,它以电子邮件(纯文本)输出格式显示提交列表;另请参见 git-format-patch[1]。该值是“patches”视图中生成的补丁集中补丁的最大数量。将 *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 会将项目根目录(基本名称)子目录中的项目视为现有项目的分支。对于每个项目 $projname.git$projname/ 目录及其子目录中的项目将不会显示在主项目列表中。相反,$projname 旁边会显示一个“+”标记,它链接到列出所有分支($projname/ 子目录中的所有项目)的“forks”视图。此外,项目的“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”检查的引用是错误的。重复值将被过滤。

示例

要启用 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;

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

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

BUG

如果回退配置文件(/etc/gitweb.conf)和用于覆盖其位置的环境变量(GITWEB_CONFIG_SYSTEM)具有反映其“回退”角色的名称,那么调试会更容易。保留当前名称是为了避免破坏现有设置。

环境变量

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

GITWEB_CONFIG

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

GITWEB_CONFIG_SYSTEM

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

GITWEB_CONFIG_COMMON

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

文件

gitweb_config.perl

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

/etc/gitweb.conf

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

/etc/gitweb-common.conf

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

另请参阅

*gitweb/README*, *gitweb/INSTALL*

GIT

Git[1] 套件的一部分

scroll-to-top