設定與配置
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢查與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.44.1 → 2.47.0 無變更
-
2.44.0
02/23/24
- 2.43.2 → 2.43.5 無變更
-
2.43.1
02/09/24
-
2.43.0
11/20/23
- 2.32.1 → 2.42.3 無變更
-
2.32.0
06/06/21
- 2.24.1 → 2.31.8 無變更
-
2.24.0
11/04/19
- 2.22.1 → 2.23.4 無變更
-
2.22.0
06/07/19
- 2.21.1 → 2.21.4 無變更
-
2.21.0
02/24/19
- 2.19.3 → 2.20.5 無變更
-
2.19.2
11/21/18
- 2.14.6 → 2.19.1 無變更
-
2.13.7
05/22/18
- 2.12.5 無變更
-
2.11.4
09/22/17
- 2.10.5 無變更
-
2.9.5
07/30/17
- 2.6.7 → 2.8.6 無變更
-
2.5.6
05/05/17
-
2.4.12
05/05/17
-
2.3.10
09/28/15
- 2.2.3 無變更
-
2.1.4
12/17/14
-
2.0.5
12/17/14
說明
用於透過網頁檢視 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 的 INSTALL 檔案以取得有關建置和安裝 gitweb 的說明。
儲存庫位置
以下說明的組態變數控制 gitweb 如何尋找 Git 儲存庫,以及如何顯示和存取儲存庫。
另請參閱 gitweb[1] 手冊頁中的「儲存庫」和後續小節。
- $projectroot
-
將前置於專案路徑的絕對檔案系統路徑;儲存庫的路徑為
$projectroot/$project
。在安裝期間設定為$GITWEB_PROJECTROOT
。必須正確設定此變數,gitweb 才能找到儲存庫。例如,如果將
$projectroot
設定為 "/srv/git",方法是將下列內容放入 gitweb 組態檔中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
(起點)的遍歷深度;這表示會略過比$project_maxdepth
更遠離$projectroot
的目錄。這純粹是效能最佳化,最初是針對 MacOS X 設計的,因為在 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
-
用於(根據檔案名稱副檔名)猜測 MIME 類型,在嘗試
/etc/mime.types
之前的檔案。請注意,如果此路徑是相對路徑,則會被視為相對於目前的 Git 儲存庫,而不是相對於 CGI 腳本。如果未設定,則只會使用/etc/mime.types
(如果檔案系統上存在)。如果找不到任何 mimetype 檔案,則會停用基於檔案副檔名的 mimetype 猜測。預設為未設定。 - $highlight_bin
-
要使用的 highlight 可執行檔路徑(它必須是來自 http://andre-simon.de/zip/download.php 的版本,因為對參數和輸出的假設)。預設設定為 highlight;如果 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_CSS
makefile 變數在建置時設定 gitweb 樣式表的預設 URI。其預設值為static/gitweb.css
(或如果定義了CSSMIN
變數,則為static/gitweb.min.css
,即如果在建置期間使用了 CSS 最小化工具)。請注意:還有一個舊版
$stylesheet
設定變數,舊版的 gitweb 使用過它。如果定義了$stylesheet
變數,則 gitweb 只會使用此變數提供的 CSS 樣式表。 - $logo
-
指向您將 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
建置變數,則為static/gitweb.min.js
,即如果在建置時使用了 JavaScript 最小化工具。請注意,此單一檔案是從多個個別的 JavaScript「模組」產生的。 - $home_link
-
所有頁面頂部的主連結目標(檢視「麵包屑」的第一部分)。預設會設定為目前頁面的絕對 URI(設定為
$my_uri
變數的值,如果$my_uri
未定義或是空字串,則設定為「/」)。 - $home_link_str
-
所有頁面頂部「主連結」的標籤,通往
$home_link
(通常是主 gitweb 頁面,其中包含專案清單)。它用作 gitweb「麵包屑追蹤」的第一個元件:<主連結> / <專案> / <動作>
。可以使用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.dev.org.tw;過去,它們指向 https://www.kernel.org 的 Git 文件。
變更 gitweb 的外觀
您可以使用以下描述的變數來調整 gitweb 產生的頁面外觀。您可以變更網站名稱、為所有頁面新增共用的頁首和頁尾,並在其主頁面(即專案清單頁面)上新增此 gitweb 安裝的描述等等。
- $site_name
-
您的網站或組織名稱,會顯示在頁面標題中。將其設定為具有描述性的內容,以便更清楚地標記書籤等。如果未設定此變數或為,則 gitweb 會使用
SERVER_NAME
CGI
環境變數的值,將網站名稱設定為「$SERVER_NAME Git」,或者如果未設定此變數,則設定為「Untitled Git」(例如,如果將 gitweb 作為獨立腳本執行)。可以使用建置時的
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
-
如果 mimetype 檢查沒有產生其他類型,則 blob_plain(原始)檢視的預設 mimetype;預設為「text/plain」。Gitweb 會根據檔案名稱的副檔名猜測要顯示的檔案的 mimetype,使用
$mimetypes_file
(如果已設定且檔案存在)和/etc/mime.types
檔案(請參閱 mime.types(5) manpage;gitweb 只支援檔案名稱副檔名規則)。 - $default_text_plain_charset
-
文字檔案的預設字元集。如果未設定,則會使用 Web 伺服器設定。預設為未設定。
- $fallback_encoding
-
當某行包含非 UTF-8 字元時,Gitweb 會假設此字元集。後援解碼會在使用時不進行錯誤檢查,因此甚至可以是「utf-8」。該值必須是有效的編碼;請參閱 Encoding::Supported(3pm) man 頁面以取得清單。預設值為「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 服務不可用」錯誤。如果 gitweb 無法確定其值,則伺服器負載將被視為 0。目前僅在 Linux 上運作,它使用
/proc/loadavg
;那裡的負載是系統上作用中任務的數量(實際運行的程序),平均值為過去一分鐘。將
$maxload
設定為未定義的值 (undef
) 可關閉此功能。預設值為 300。 - $omit_age_column
-
如果為 true,則會省略專案列表頁面上最新提交的日期欄位。它可以節省一些 I/O 和每個儲存庫的分叉。
- $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 標頭中的「產生器」元標頭中使用。
- $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 功能
可以使用 %feature
雜湊啟用(或停用)和配置許多 gitweb 功能。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
-
啟用在「樹狀結構」檢視中顯示 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」列表中啟用顯示遠端 head(遠端追蹤分支)。在大多數情況下,遠端追蹤分支的列表是不必要的內部私有細節,因此此功能預設為停用。git-instaweb[1] 通常用於瀏覽本地儲存庫,它啟用並使用此功能。
此功能可以透過儲存庫的
gitweb.remote_heads
配置變數(布林值)針對每個儲存庫進行配置。
其餘功能無法針對每個專案進行覆寫。
- search
-
啟用文字搜尋,它將列出作者、提交者或提交文字與給定字串匹配的提交;請參閱 git-log[1] 手冊頁中
--author
、--committer
和--grep
選項的描述。預設為啟用。不支援專案特定的覆寫。
- forks
-
如果啟用此功能,gitweb 會將專案根目錄(basename)子目錄中的專案視為現有專案的分支。對於每個專案
$projname.git
,$projname/
目錄及其子目錄中的專案將不會顯示在主專案列表中。相反,$projname
旁邊會顯示一個「+」標記,該標記連結到一個「forks」檢視,其中列出所有分支($projname/
子目錄中的所有專案)。此外,專案摘要頁面也連結到專案的「forks」檢視。如果專案列表是從檔案中取得的(
$projects_list
指向一個檔案),只有當分支在該檔案中列在主專案之後時,才會被識別為分支。不支援專案特定的覆寫。
- actions
-
在所有專案頁面的動作列中插入自訂連結。這允許您連結到整合到 gitweb 中的第三方腳本。
「預設」值包含一個三元組列表,格式為
("<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
配置變數針對每個儲存庫進行配置,該變數包含一個以空格分隔的 refs 列表。一個範例:[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;
如果您允許覆寫快照功能,則可以指定哪些快照格式是全域停用的。您也可以新增所需的任何命令列選項(例如設定壓縮等級)。例如,您可以停用 Zip 壓縮快照,並將 gzip(1) 設定為以等級 6 執行,方法是將以下行新增至您的 gitweb 設定檔:
$known_snapshot_formats{'zip'}{'disabled'} = 1; $known_snapshot_formats{'tgz'}{'compressor'} = ['gzip','-6'];
錯誤
如果後備設定檔(/etc/gitweb.conf
)和用於覆寫其位置的環境變數(GITWEB_CONFIG_SYSTEM)的名稱反映其「後備」角色,則除錯會更容易。保留目前的名稱是為了避免破壞正在運作的設定。
GIT
屬於 git[1] 套件的一部分