セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ
デバッグ
メール
外部システム
サーバー管理
- 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
説明
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設定」のサブセクションは、gitweb[1]マニュアルページを参照してください。
ディスカッション
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リポジトリ管理ツールの1つ)を介してリポジトリを表示するためのアクセス制御に関連する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がリポジトリを見つけるには、この変数を正しく設定する必要があります。たとえば、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
-
プロジェクトをリストするプレーンテキストファイルの名前、またはプロジェクトをスキャンするディレクトリの名前。
プロジェクトリストファイルは、1行に1つのプロジェクトをリストする必要があります。各行は次の形式になります
<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]は、--export-all
を指定して起動しない限り、git-daemon-export-okを使用します。デフォルトでは、この変数は設定されていません。つまり、この機能はオフになっています。 - $export_auth_hook
-
表示する必要があるリポジトリを決定するために使用される関数。このサブルーチンは、プロジェクトへのフルパスである1つのパラメーターを取り、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_STRICT_EXPORT
を介してgitwebをビルドするときに設定できます。デフォルトでは、この変数は設定されていません。つまり、プロジェクトリストページから非表示になっているリポジトリ(たとえば、$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タイプの推測に使用するファイル。注このパスが相対パスの場合、CGIスクリプトではなく、現在のGitリポジトリに対する相対パスとして扱われます。設定されていない場合は、/etc/mime.types
のみが使用されます(ファイルシステムに存在する場合)。mimetypesファイルが見つからない場合、ファイルの拡張子に基づくmimetypeの推測は無効になります。デフォルトでは設定されていません。 - $highlight_bin
-
使用する highlight 実行ファイルへのパス(パラメータと出力に関する前提があるため、http://andre-simon.de/zip/download.php のものを使用する必要があります)。デフォルトではhighlightに設定されています。WebサーバーのPATHにインストールされていない場合は、highlight実行ファイルのフルパスに設定してください。なお、構文ハイライトを実際に使用するには、gitwebでhighlight機能を設定する必要があります。
注意:ファイルをハイライトするには、その構文タイプが検出され、その構文が "highlight" でサポートされている必要があります。デフォルトの構文検出は最小限であり、デフォルトでは検出されないサポートされている構文タイプが多く存在します。構文検出を追加する方法は3つあります。最初の優先順位は
%highlight_basename
で、ベース名(完全なファイル名、例えば "Makefile")に基づいて検出します。2番目の優先順位は%highlight_ext
で、拡張子(例えば "sh")に基づいて検出します。これらのハッシュのキーはそれぞれベース名と拡張子であり、特定キーの値は、"highlight" に--syntax <syntax>
で渡される構文の名前です。最後の優先順位は、ファイルの最初の行に基づいて言語を検出するための、Shebang
正規表現の "highlight" 設定です(例えば、 "#!/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 は、makefile 変数
GITWEB_CSS
を使用してビルド時に設定できます。そのデフォルト値はstatic/gitweb.css
(または、CSSMIN
変数が定義されている場合、つまり CSS ミニファイアがビルド中に使用される場合はstatic/gitweb.min.css
)です。注意:古い gitweb で使用されていたレガシーな
$stylesheet
構成変数も存在します。$stylesheet
変数が定義されている場合は、この変数で指定された CSS スタイルシートのみが gitweb で使用されます。 - $logo
-
Webサーバー上の git-logo.png を置いた場所、またはより一般的にはロゴの URI(72x27 サイズ)を指します。この画像は、各 gitweb ページの右上隅に表示され、Atom フィードのロゴとして使用されます。gitweb のベース URI を基準とした相対パスです。
GITWEB_LOGO
変数を使用して gitweb のビルド時に調整できます。デフォルトではstatic/git-logo.png
に設定されています。 - $favicon
-
Webサーバー上の git-favicon.png を置いた場所、またはより一般的にはファビコンの URI を指します。これは "image/png" タイプとして提供されます。ファビコン(Webサイトのアイコン)をサポートするWebブラウザーは、ブラウザーのURLバーやブックマーク内のサイト名の横にファビコンを表示する場合があります。gitweb のベース URI を基準とした相対パスです。
GITWEB_FAVICON
変数を使用して、ビルド時に調整できます。デフォルトではstatic/git-favicon.png
に設定されています。 - $javascript
-
Webサーバー上の gitweb.js を置いた場所、またはより一般的には 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 の「パンくずリスト」の最初のコンポーネントとして使用されます:<ホームリンク> / <プロジェクト> / <アクション>
。GITWEB_HOME_LINK_STR
変数を使用して、ビルド時に設定できます。デフォルトでは、「projects」に設定されています。これは、このリンクがプロジェクトリストにつながるためです。もう1つの一般的な選択肢は、サイトの名前に設定することです。これは生の 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.dokyumento.jp を参照します。以前は、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
-
gitweb プロジェクトの概要ページ("projects_list" ビュー)に存在する場合に含める HTML ファイルの名前。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(raw)ビューのデフォルトの MIME タイプ。デフォルトでは "text/plain" です。Gitweb は、ファイル名の拡張子に基づいて表示するファイルの MIME タイプを推測します。
$mimetypes_file
(設定されておりファイルが存在する場合)と/etc/mime.types
ファイルを使用します(mime.types(5) man ページを参照。ファイル名拡張子ルールのみが gitweb でサポートされています)。 - $default_text_plain_charset
-
テキストファイルのデフォルトの文字セット。これが設定されていない場合は、Web サーバーの設定が使用されます。デフォルトでは設定されていません。
- $fallback_encoding
-
Gitweb は、行に UTF-8 以外の文字が含まれている場合、この文字セットを想定します。フォールバックデコードはエラーチェックなしで使用されるため、"utf-8" であってもかまいません。値は有効なエンコーディングである必要があります。リストについては、Encoding::Supported(3pm) man ページを参照してください。デフォルトは "latin1"(別名 "iso-8859-1")です。
- @diff_opts
-
git-diff と git-diff-tree の名前変更検出オプション。デフォルトは ('-M') です。コピーも検出する場合は ('-C') または ('-C', '-C') に設定し、名前変更検出を不要にする場合は ()、つまり空のリストに設定します。
注意:名前変更、特にコピー検出は、CPU をかなり消費する可能性があります。また、上記のオプションで生成されたパッチは、特にファイルのコピー ('-C') や交差する名前変更 ('-B') が含まれている場合、Git 以外のツールで問題が発生する可能性があることにも注意してください。
いくつかのオプション機能とポリシー
ほとんどの機能は %feature
ハッシュを使用して構成されます。ただし、いくつかの追加の gitweb 機能は、以下で説明する変数を使用して有効化および構成できます。このリストには、gitweb の外観を制御する構成変数に加えて、gitweb の管理面(例えば、クロスサイトスクリプティング防止。確かにこれは副作用として「サマリー」ページの外観やロード制限に影響を与えます)を構成する変数も含まれています。
- @git_base_url_list
-
Git ベース URL のリスト。これらの URL は、プロジェクトの取得元を記述する URL を生成するために使用され、プロジェクトのサマリーページに表示されます。完全な取得 URL は、このリストの各要素に対して "
$git_base_url/$project
" となります。複数のベース URL を設定できます(例えば、git://
プロトコル用に1つ、http://
プロトコル用に1つなど)。リポジトリごとの設定は、
$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 の場合、リポジトリ内のコンテンツがクロスサイトスクリプティング (XSS) 攻撃を開始するのを防ぐために、一部の gitweb 機能が無効になります。リポジトリのコンテンツを信頼しない場合は、これを true に設定してください。デフォルトでは false (0 に設定) です。
- $maxload
-
gitweb クエリに応答する最大負荷を設定するために使用されます。サーバー負荷がこの値を超えると、gitweb は「503 Service Unavailable」エラーを返します。gitweb がその値を判断できない場合、サーバー負荷は 0 と見なされます。現在、Linux でのみ動作し、
/proc/loadavg
を使用します。そこでの負荷は、過去 1 分間に平均したシステム上のアクティブなタスクの数、つまり実際に実行されているプロセスの数です。この機能をオフにするには、
$maxload
を未定義の値 (undef
) に設定します。デフォルト値は 300 です。 - $omit_age_column
-
true の場合、プロジェクトリストページの最新コミットの日付を含む列を省略します。これにより、I/O とリポジトリごとのフォークを少し節約できます。
- $omit_owner
-
true の場合、リポジトリ所有者に関する情報の表示を防止します。
- $per_request_config
-
これがコード参照に設定されている場合、リクエストごとに 1 回実行されます。この方法でセッションごとに変化する設定の一部を設定できます。たとえば、gitweb 設定ファイルで次のコードを使用できます。
our $per_request_config = sub { $ENV{GL_USER} = $cgi->remote_user || "gitweb"; };
$per_request_config
がコード参照でない場合、ブール値として解釈されます。true の場合、gitweb はリクエストごとに設定ファイルを 1 回処理し、false の場合、gitweb は実行されるたびに 1 回だけ設定ファイルを処理します。デフォルトでは true (1 に設定) です。注意:
$my_url
、$my_uri
、および$base_url
は、すべてのリクエストの前にデフォルト値で上書きされるため、変更する場合は、必ずこの変数を true または目的の変更を反映するコード参照に設定してください。この変数は、mod_perl、FastCGI、Plackup のように、単一の gitweb インスタンスを使用して複数のリクエストを処理する永続的な Web 環境を使用する場合にのみ重要です。
その他の変数
通常、以下に説明する設定変数を変更(調整)する必要はありません。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](詳細については、gitdiffcore[7] の pickaxe エントリを参照する、
-S<string>
オプションの説明)で説明されています。この機能は、リポジトリの
gitweb.pickaxe
設定変数(ブール値)を設定することにより、リポジトリごとに構成できます。 - show-sizes
-
「tree」ビューで、
ls -l
と同様に、blob(通常のファイル)のサイズを別の列に表示できるようにします。 git-ls-tree[1] man ページの-l
オプションの説明を参照してください。これにより、少し I/O が発生します。デフォルトで有効になっています。この機能は、リポジトリの
gitweb.showSizes
設定変数(ブール値)を介して、リポジトリごとに構成できます。 - patches
-
「patches」ビューを有効にして構成します。これにより、電子メール(プレーンテキスト)出力形式でコミットのリストが表示されます。git-format-patch[1] も参照してください。値は、「patches」ビューで生成されるパッチセット内の最大パッチ数です。default フィールドを単一の項目を含むリストに設定するか、空のリストに設定してパッチビューを無効にするか、単一の負の数を含むリストに設定して制限を削除します。デフォルト値は 16 です。
この機能は、リポジトリの
gitweb.patches
設定変数(整数)を介して、リポジトリごとに構成できます。 - avatar
-
アバターのサポート。この機能を有効にすると、「shortlog」や「commit」などのビューに、各コミッターと著者のメールに関連付けられたアバターが表示されます。
現在利用可能なプロバイダーは、「gravatar」 と 「picon」 です。一度に 1 つのプロバイダーのみを選択できます(default は 1 つの要素のリストです)。不明なプロバイダーが指定されている場合、機能は無効になります。注意 一部のプロバイダーでは、追加の Perl パッケージをインストールする必要がある場合があります。詳細については、
gitweb/INSTALL
を参照してください。この機能は、リポジトリの
gitweb.avatar
設定変数を使用して、リポジトリごとに構成できます。アイコンとアバターのピクセルサイズを持つ
%avatar_size
も参照してください(「default」は「log」や「shortlog」のような 1 行に使用され、「double」は「commit」、「commitdiff」、「tag」のような 2 行に使用されます)。デフォルトのフォントサイズまたは行の高さが変更された場合(たとえば、@stylesheets
に追加の CSS スタイルシートを追加するなど)、これらの値を変更することが適切な場合があります。 - email-privacy
-
生成された HTML などからメールアドレスを隠蔽します。これにより、Git ログの著者/コミッターやコメントセクションから取得したメールアドレスが不明瞭になります。これは、アドレスを収集して悪用する Web クローラーを妨害することを目的としています。このようなクローラーは 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/
サブディレクトリ内のすべてのプロジェクト)。さらに、プロジェクト概要ページからプロジェクトの「フォーク」ビューにリンクされます。プロジェクトリストがファイルから取得される場合(
$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 が含まれます。デフォルトで有効になっています。
値は、3つの値のリストです。(クライアントが他のタイムゾーンを選択してCookieに保存していない場合の)デフォルトのタイムゾーン、選択したタイムゾーンを保存するCookieの名前、および操作のために日付をマークアップするために使用されるCSSクラスです。この機能をオフにする場合は、「default」を空のリスト(
[]
)に設定します。一般的な gitweb 構成ファイルは、開始(デフォルト)タイムゾーンのみを変更し、他の要素はデフォルト値のままにします。
$feature{'javascript-timezone'}{'default'}[0] = "utc";
ここに示されている構成例は、下位互換性と上位互換性が保証されています。
タイムゾーンの値は、「local」(ブラウザが使用するローカルタイムゾーン)、「utc」(JavaScriptまたはこの機能が無効になっている場合にgitwebが使用するタイムゾーン)、または「+0200」のような「+/-HHMM」の形式の数値タイムゾーンにすることができます。
プロジェクト固有の上書きはサポートされていません。
- extra-branch-refs
-
「refs」の下に追加のディレクトリのリストで、ブランチ ref として使用されます。たとえば、refs/heads/ の下のすべてのブランチが公式のプッシュ後レビューブランチであり、refs/sandbox/、refs/wip および refs/other の下のブランチが権限がはるかに広いユーザーブランチである gerrit 設定がある場合、この変数を次のように設定できます。
$feature{'extra-branch-refs'}{'default'} = ['sandbox', 'wip', 'other'];
この機能は、$feature{extra-branch-refs}{override} を true に設定した後、リポジトリの
gitweb.extraBranchRefs
設定変数を使用して、リポジトリごとに設定できます。これには、スペースで区切られた ref のリストが含まれます。例:[gitweb] extraBranchRefs = sandbox wip other
gitweb.extraBranchRefs は実際には多値設定変数であるため、次の例も正しく、結果は上記のコードスニペットと同じです。
[gitweb] extraBranchRefs = sandbox extraBranchRefs = wip other
"git check-ref-format" の精査に合格しない ref を指定するとエラーになります。重複した値はフィルタリングされます。
EXAMPLES
blame、ピッケル検索、およびスナップショットサポート(「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)の名前が、その「フォールバック」の役割を反映したものであれば、デバッグが容易になります。現在の名前は、動作中の設定を壊さないように維持されています。
GIT
git[1] スイートの一部