中文 ▾ 主题 ▾ 最新版本 ▾ gitweb.conf 上次更新于 2.44.0

名称

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

概要

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

描述

gitweb CGI 脚本用于通过 Web 查看 Git 存储库,它使用一个 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_CONFIG_COMMONGITWEB_CONFIG_SYSTEMGITWEB_CONFIG 设置为非空值来覆盖 gitweb 配置文件的位置。

配置文件的语法是 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_EXPORT_OK 在构建 gitweb 时设置。此路径相对于 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(如果文件系统上存在)。如果未找到 mimetypes 文件,则禁用基于文件扩展名的 mimetype 猜测。默认情况下未设置。

$highlight_bin

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

注意:要突出显示文件,必须检测到其语法类型,并且 "highlight" 必须支持该语法。默认的语法检测是最小的,并且有许多支持的语法类型默认情况下没有检测。有三个选项可以添加语法检测。第一优先级和第二优先级是 %highlight_basename%highlight_ext,它们基于 basename(完整文件名,例如 "Makefile")和扩展名(例如 "sh")进行检测。这些哈希的键分别是 basename 和扩展名,给定键的值是要通过 --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 订阅的徽标。相对于 gitweb 的基本 URI(作为路径)。可以使用 GITWEB_LOGO 变量在构建 gitweb 时进行调整。默认设置为 static/git-logo.png

$favicon

指向您将 *git-favicon.png* 放在 Web 服务器上的位置,或者更通用地说,是网站图标的 URI,它将以 "image/png" 类型提供。支持网站图标的 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 "模块" 生成的。

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

$home_link_str

所有页面顶部的“首页链接”的标签,指向 $home_link(通常是包含项目列表的主 gitweb 页面)。它用作 gitweb 的 "breadcrumb trail" 的第一个组成部分:<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

blob_plain(原始)视图的默认 mimetype,如果 mimetype 检查没有导致其他类型;默认情况下为 "text/plain"。Gitweb 基于文件名的扩展名猜测要显示的文件的 mimetype,使用 $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 管理方面的变量(例如,跨站脚本攻击预防;诚然,这会对 "summary" 页面的外观或负载限制产生副作用)。

@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

如果为 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 环境时才重要,这些环境使用单个 gitweb 实例服务多个请求,例如 mod_perl、FastCGI 或 Plackup。

其他变量

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

$version

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

our $version .= " with caching";

如果您运行具有缓存支持的修改版 gitweb。 此变量纯粹是信息性的,例如,在 HTML 标头中的 "generator" meta 标头中使用。

$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

启用和配置 "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 将项目根目录(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"(gitweb 在 JavaScript 或此功能被禁用时使用的值),或者采用 "+/-HHMM" 形式的数字时区,例如 "+0200"。

不支持项目特定的覆盖。

extra-branch-refs

将在 "refs" 下用作分支引用的其他目录的列表。 例如,如果您有一个 gerrit 设置,其中 refs/heads/ 下的所有分支都是官方的、push-after-review 的分支,而 refs/sandbox/、refs/wip 和 refs/other 下的分支是用户分支,权限范围更广,那么您可能希望将此变量设置为如下所示

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

在将 $feature{extra-branch-refs}{override} 设置为 true 后,可以通过仓库的 gitweb.extraBranchRefs 配置变量为每个仓库单独配置此功能,该变量包含以空格分隔的 refs 列表。 一个例子

[gitweb]
	extraBranchRefs = sandbox wip other

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

[gitweb]
	extraBranchRefs = sandbox
	extraBranchRefs = wip other

指定未通过 "git check-ref-format" 审查的 ref 是错误的。 重复的值将被过滤。

示例

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

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