設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.50.1 無更改
-
2.50.0
2025-06-16
- 2.44.1 → 2.49.1 無更改
-
2.44.0
2024-02-23
- 2.43.2 → 2.43.7 無變更
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.32.1 → 2.42.4 無更改
-
2.32.0
2021-06-06
- 2.24.1 → 2.31.8 無更改
-
2.24.0
2019-11-04
- 2.22.1 → 2.23.4 無更改
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 無更改
-
2.21.0
2019-02-24
- 2.19.3 → 2.20.5 無更改
-
2.19.2
2018-11-21
- 2.14.6 → 2.19.1 無變化
-
2.13.7
2018-05-22
- 2.12.5 無更改
-
2.11.4
2017-09-22
- 2.10.5 無更改
-
2.9.5
2017-07-30
- 2.6.7 → 2.8.6 無更改
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.2.3 無變更
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
描述
用於透過 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_COMMON
、GITWEB_CONFIG_SYSTEM
和 GITWEB_CONFIG
。
您還可以在執行時透過將以下環境變數設定為非空值來覆蓋 gitweb 配置檔案的位置:GITWEB_CONFIG_COMMON
、GITWEB_CONFIG_SYSTEM
和 GITWEB_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 樣式表。 - $logo
-
指向您將 *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“模組”生成的。 - $home_link
-
所有頁面頂部主頁連結的目標(檢視“麵包屑”的第一部分)。預設情況下,它設定為當前頁面的絕對 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.tw;過去,它們指向 https://www.kernel.org 上的 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
配置變數(布林值)按每個倉庫進行配置。
其餘功能無法按專案覆蓋。
- search
-
啟用文字搜尋,它將列出匹配作者、提交者或提交文字到給定字串的提交;參見 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)具有反映其“回退”角色的名稱,那麼除錯會更容易。保留當前名稱是為了避免破壞現有設定。