SYNOPSIS
/etc/gitweb.conf, /etc/gitweb-common.conf, $GITWEBDIR/gitweb_config.perl
DESCRIPTION
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自体の構成設定を変更することもできますが、それらの変更はアップグレード時に失われます。構成設定は、デフォルト名が gitweb_config.perl
のCGIスクリプトと同じディレクトリ内のファイルに配置される場合もあります。これにより、シンボリックリンクを使用して、構成が異なる複数のgitwebインスタンスを作成できます。
注意: 一部の構成は、gitweb全体ではなく、リポジトリごとに制御できることに注意してください。 gitweb(1)の manpage の「Per-repository gitweb configuration」サブセクションを参照してください。
DISCUSSION
gitwebは、以下のソースから以下の順序で構成データを読み取ります:
-
組み込み値(ビルド段階で設定されるものもあります)
-
共通のシステム全体の構成ファイル(デフォルトは
/etc/gitweb-common.conf
) -
インスタンスごとの構成ファイル(デフォルトでは、インストールされたgitwebと同じディレクトリにある
gitweb_config.perl
になります)。または、存在しない場合は、システム全体の構成ファイル(デフォルトは/etc/gitweb.conf
)にフォールバックします。
後から構成ファイルで得られた値は、上記の順序で先に得られた値を上書きします。
共通のシステム全体の構成ファイルや、フォールバックシステム全体の構成ファイルや、インスタンスごとの構成ファイルの場所は、ビルド時のMakefile構成変数、それぞれ GITWEB_CONFIG_COMMON
と GITWEB_CONFIG_SYSTEM
と GITWEB_CONFIG
を使用して定義されます。
あなたは環境変数 GITWEB_CONFIG_COMMON
と GITWEB_CONFIG_SYSTEM
と GITWEB_CONFIG
を空でない値に設定することにより、実行時にgitweb構成ファイルの場所をオーバーライドすることもできます。
構成ファイルの構文はPerlの構文です。これらのファイルは、Perlコード(gitweb自体が記述されている言語)の断片としてそれらをsourceすることによって処理されるためです。 変数は通常、 (our $variable = <value>;
のように) our
修飾子を使用して設定され、新しいバージョンのgitwebがとある変数を使用しなくなったために、とある変数の宣言で停止(stop)する構文エラーを回避します。
あなたは read_config_file() サブルーチンを使用して、他の構成ファイルを含めることができます。たとえば、(Gitリポジトリ管理ツールの1つである)Gitoliteを介してリポジトリを表示するための、アクセス制御に関連するgitweb構成を別のファイルに入れたい場合があります。例えばそれが /etc/gitweb-gitolite.conf
にあるとすると、それを含めるには以下のようにします。
read_config_file("/etc/gitweb-gitolite.conf");
これを、使用されているgitweb構成ファイルのどこか、例えばインストールごとのgitweb構成ファイルに置きます。 注意: read_config_file()は、読み取ったファイルが存在することを自分自身でチェックし、見つからない場合は何もしないことに注意してください。 また、インクルードファイルのエラーも処理します。
一部のインストールでは、構成ファイルがまったくないデフォルトの構成が完全に機能する場合があります。それでも、構成ファイルはgitwebの動作をさまざまな方法でカスタマイズまたは微調整するのに役立ち、構成可能な %features
変数を使用して明示的に有効にしない限り、一部のオプション機能は有効になりません(以下の「Configuring gitweb features」セクションも参照)。
CONFIGURATION VARIABLES
設定変数の中には、gitwebのビルド時にデフォルト値が設定されるものがあります(CGIスクリプトに埋め込まれています) — その場合は、その事実を記述しています。 gitwebのビルドとインストールについては、gitwebの INSTALL ファイルを参照してください。
Location of repositories
以下で説明する構成変数は、gitwebがGitリポジトリを見つける方法、およびリポジトリが表示およびアクセスされる方法を制御します。
gitweb(1)の manpage の「Repositories」以降のサブセクションも参照してください。
- $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
-
プロジェクトを一覧表示するプレーンテキストファイルの名前、またはプロジェクトをスキャンするディレクトリの名前。
プロジェクトリストファイルには、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
(開始点)を基準にしてトラバーサル深度を制限するために使用されます。 これは、$project_maxdepth
よりも$projectroot
から離れているディレクトリがスキップされることを意味します。これは純粋にパフォーマンスの最適化であり、元々は再帰的なディレクトリトラバーサルが遅い 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) manpage の「Controlling access to Git repositories」サブセクションも参照してください。
- $strict_export
-
概要ページにも表示されているリポジトリの表示のみを許可します。これにより、たとえば、
$ export_ok
ファイルは、リポジトリが表示されているかどうかだけでなく、リポジトリが使用可能かどうかを判断します。$projects_list
がプロジェクトのリストを含むファイルを指している場合、リストされているリポジトリのみがgitwebで使用できます。GITWEB_STRICT_EXPORT
を介してgitwebの構築中に設定できます。デフォルトでは、この変数は設定されていません。つまり、プロジェクトリストページから非表示になっている(たとえば、 `$projects_listファイルにリストされいない)リポジトリに直接のアクセスができます。
Finding files
以下の構成変数は、ファイルの場所をgitwebに指示します。これらの変数の値は、ファイルシステム上のパスです。
- $GIT
-
使用するコアgit実行可能ファイル。デフォルトでは
$GIT_BINDIR/git
に設定されており、これはデフォルトで$(bindir)/git
に設定されています。バイナリパッケージからインストールされたGitを使用する場合は、通常、これを/usr/bin/git
に設定する必要があります。Webサーバーに適切なPATHが通っている場合、これは単にgit
になる可能性があります。 セキュリティの観点から、gitバイナリへの絶対パスを使用することをお勧めします。複数のGitバージョンがインストールされている場合は、gitバイナリへの絶対パスを使用して、使用するバージョンを選択できます。gitwebが機能するには、(正しく)設定する必要があります。 - $mimetypes_file
-
/etc/mime.types
を試す前に、(ファイル名拡張子に基づいて)MIMEタイプを推測するために使用するファイル。 NOTE このパスは、相対的である場合、CGIスクリプトではなく、現在のGitリポジトリに相対的であると見なされます。 設定されていない場合、/etc/mime.types
のみが使用されます(/etc/mime.types
がファイルシステムに存在する場合)。 mimetypesファイルが見つからない場合、ファイルの拡張子に基づくmimetypeの推測は無効になります。デフォルトでは設定されていません。 - $highlight_bin
-
使用するhighlight実行可能ファイルのパス(パラメーターと出力に関して仮定してあるため、 http://www.andre-simon.de からのものである必要があります)。デフォルトでは
highlight
に設定されています。WebサーバーのPATHが通ったところにインストールされていない場合は、highlight実行可能ファイルへのフルパスを設定します。gitwebが実際に構文の強調表示(syntax highlighting)を使用するには、highlight
機能を設定する必要があることに注意してください。注意 : ファイルを強調表示するには、その構文タイプを検出し、 その構文を
highlight
でサポートする必要があります。 デフォルトの構文検出は最小限であり、 デフォルトで検出されない多くのサポートされている構文タイプがあります。 構文検出を追加するには、3つのオプションがあります。 1番目と2番目の優先順位は%highlight_basename
と%highlight_ext
で、 これらはベース名(完全なファイル名、たとえばMakefile
)と拡張子(たとえばsh
)に基づいて検出します。 これらのハッシュのキーはそれぞれベース名と拡張子であり、 指定されたキーの値は、--syntax<syntax>
を介してhighlight
に渡される構文の名前です。 最後の優先順位は、 ファイルの最初の行に基づいて言語を検出するためのShebang
正規表現のhighlight
構成です (たとえば、行#!/bin/bash
とマッチします)。 highlightのドキュメントとデフォルトの設定を参照してください。 詳細については、/etc/highlight/filetypes.conf
を参照してください。たとえば、ホストしているリポジトリがPHPファイルに
phtml
拡張子を使用していて、それらのファイルに正しい構文を強調表示したい場合は、gitweb構成に以下を追加できます:our %highlight_ext; $highlight_ext{'phtml'} = 'php';
Links and their targets
以下で説明する構成変数は、いくつかのgitwebリンクを構成します。ターゲットと外観(テキストまたは画像)、およびページの前提条件(スタイルシート、favicon、画像、スクリプト)の場所です。 通常、 @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 minifierが使用されている場合はstatic/gitweb.min.css
) です。注意: 古いgitwebで使用されていた従来の
$stylesheet
構成変数もあります。 `$stylesheet`変数が定義されている場合、 この変数によって指定されたCSSスタイルシートのみがgitwebによって使用されます。 - $logo
-
Webサーバー上で
git-logo.png
を配置する場所を指定します。または、72x27サイズの汎用ロゴのURIを指します。この画像は、各gitwebページの右上隅に表示され、Atomフィードのロゴとして使用されます。 gitwebのベースURIからの相対パスです。GITWEB_LOGO
変数を使用してgitwebを構築するときに調整できます。デフォルトではstatic/git-logo.png
に設定されています。 - $favicon
-
Webサーバー上で
git-favicon.png
を配置する場所を指します。または、image/png
タイプとして提供されるfaviconの汎用URIを指します。favicon(Webサイトアイコン)をサポートするWebブラウザーは、favicon(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 minifierが使用されている場合はstatic/gitweb.min.js
です。 注意 この単一のファイルは、複数の個別のJavaScriptモジュール達から生成されます。 - $home_link
-
すべてのページの上部にあるホームリンク(home link)のターゲット(パンくずリスト(breadcrumbs)ビューの最初の部分)。 デフォルトでは、現在のページの絶対URIに設定されます(
$my_uri
変数の値、または$my_uri
が未定義または空の文字列の場合は/
に設定されます)。 - $home_link_str
-
すべてのページの上部にある「home link」のラベルで、
$home_link
に誘導します(通常、プロジェクトリストを含むメインのgitwebページです)。<home link> / <project> / <action>
は、gitwebの「パンくずリスト」の最初のコンポーネントとして使用されます。GITWEB_HOME_LINK_STR
変数を使用してビルド時に設定できます。このリンクからプロジェクトのリストが表示されるため、デフォルトではラベルは "projects" に設定されています。もう1つの一般的な選択肢は、サイトの名前に設定することです。生のHTMLとして扱われるため、信頼できないソースからは設定しないでください。 -
@extra_breadcrumbs
-
ホームリンクの前のパンくずリスト(breadcrumb trail)の先頭に、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.com を参照します。 過去には、 https://www.kernel.org のGitのドキュメントを参照していました。
Changing gitweb’s look
あなたは、以下で説明する変数を使用して、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
を使用して設定することができる。デフォルト値はありません。 - $site_footer
-
各ページの下部にインクルードされる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
です。不明な値は、ソートされていないことを意味します。
Changing gitweb’s behavior
これらの構成変数は、gitwebの「内部」動作を制御します。
- $default_blob_plain_mimetype
-
mimetypeチェックで他のタイプが生成されない場合の、blob_plain (raw)ビューのデフォルトのmimetype。デフォルトでは "text/plain" です。 Gitwebは、
$mimetypes_file
(設定されていてfileが存在する場合)と/etc/mime.types
ファイルを使用して、ファイル名の拡張子に基づいて表示するファイルのmimetypeを推測します。( mime.types(5) manpage を参照してください。gitwebではファイル名拡張子ルールのみがサポートされています。) - $default_text_plain_charset
-
テキストファイルのデフォルトの文字セット。これが設定されていない場合は、Webサーバー構成が使用されます。デフォルトでは設定されていません(unset)。
- $fallback_encoding
-
行にUTF-8以外の文字が含まれている場合、Gitwebはこの文字セットを想定します。フォールバックデコードはエラーチェックなしで使用されるため、「utf-8」にすることもできます。値は有効なエンコーディングである必要があります。 リストについては、 Encoding::Supported (3pm) の manpage を参照してください。デフォルトは「latin1」、別名「iso-8859-1」です。
-
@diff_opts
-
git-diffおよびgit-diff-treeの検出オプションの名前を変更します。デフォルトは ('-M') です。コピーも検出するには ('-C') または ('-C', '-C')に設定するか、名前変更を検出したくない場合は () 、つまり空のリストに設定します。
注意 名前変更(rename)、特にコピーの検出は、CPUにかなりの負荷がかかる可能性があります。 また、Git以外のツールでは、 上記のオプションで生成されたパッチで問題が発生する可能性があることにも注意してください。 特に、ファイルのコピー ('-C') または交差名前変更(criss-cross renames) ('-B') が含まれる場合はそうです。
Some optional features and policies
ほとんどの機能は %feature
ハッシュを介して構成されます。ただし、追加のgitweb機能の一部は、以下で説明する変数を使用してオンにして構成できます。gitwebの外観を制御する構成変数の傍にあるこのリストには、gitwebの管理側を構成する変数が含まれています。(例: クロスサイトスクリプティングの防止。ご存知のとおり、これは副作用として「要約」ページの外観や負荷制限に影響します)
-
@git_base_url_list
-
GitベースURLのリスト。これらのURL群は、プロジェクトの概要ページに表示される、プロジェクトを取得する場所を説明するURLを生成するために使用されます。このリストの各要素の完全なフェッチURLは
$git_base_url/$project
です。 複数のベースURLを設定できます(たとえば、1つはgit://
プロトコル用、もう1つはhttp://
プロトコル用)。注意: リポジトリごとの構成は、
$GIT_DIR/cloneurl
ファイルで設定することも、プロジェクト構成の、複数値のgitweb.url
構成変数の値として設定することもできます。リポジトリごとの構成は、@git_base_url_list
要素とプロジェクト名で構成される値よりも優先されます。あなたは
GITWEB_BASE_URL
ビルド時構成変数を設定することにより、ビルド時に単一の値(1つの entry/item だけを持つリスト)を設定できます。デフォルトでは、 () 、つまり空のリストに設定されています。これは、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環境を使用する場合にのみ重要です。
Other variables
通常、あなたは以下で説明する構成変数を変更(調整)する必要はありません。 それらは正しい値にするために、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(例えば、相対URLの場合は $logo 、 $favicon 、 @stylesheets)が必要で、空でないPATH_INFOを持つURLに対してのみ <base href="$base_url"> が必要でした。通常、gitwebはその値を正しく設定し、この変数に $my_uri や "/" などを設定する必要はありません。あなたがとにかくそれをオーバーライドする必要がある場合は、 $per_request_config を参照してください。
CONFIGURING GITWEB FEATURES
多くの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]
に設定して機能を解除します。「Examples例」セクションの「blame」機能に関する一節も参照してください。パラメータを受け入れる(設定可能な)機能を無効にするには、この要素を空のリスト、つまり
[]
に設定する必要があります。 - override
-
このフィールドにtrue値がある場合、指定の機能はオーバーライド可能です。つまり、リポジトリごとに構成(または 有効/無効 化)できます。
通常、指定の「<feature>」は、リポジトリごとのGit構成ファイルの
gitweb.<feature>
構成変数を介して構成できます。注意 デフォルトではオーバーライド可能な機能はありません。
- sub
-
実装の内部詳細。重要なのは、このフィールドが存在しない場合、特定の機能のリポジトリごとのオーバーライドはサポートされないということです。
あなたはgitweb構成ファイルでこれを変更する必要はありません。
Features in %feature
%feature
ハッシュを介して構成可能なgitweb機能を以下に示します。これは完全なリストであるべきですが、最終的に信頼できる完全なリストはgitweb.cgiソースコードにあり、機能はそのコメントで説明されています。
- blame
-
「blame」および「blame_incremental」ブロブビューを有効にし、各行にそれを変更した最後のコミットを表示します。 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
-
ls -l
と同様に、別の列の「ツリー」ビューにブロブ(通常のファイル)のサイズを表示できるようにします。 git-ls-tree(1) のmanpageにある-l
オプションの説明を参照してください。これにはちょびっとI/Oコストがかかります。デフォルトで有効になっています。この機能は、リポジトリの
gitweb.showSizes
構成変数(ブール値)を介してリポジトリごとに構成できます。 - patches
-
コミットのリストを電子メール(プレーンテキスト)出力形式で表示する「パッチ」ビューを有効にして構成します。 git-format-patch(1) も参照してください。 この値は、「パッチ」ビューで生成されたパッチセット内のパッチの最大数です。 default フィールドを、パッチビューを無効にするための単一の項目を含むリストまたは空のリストに設定するか、制限を削除するために単一の負の数を含むリストに設定します。デフォルト値は16です。
この機能は、リポジトリの
gitweb.patches
構成変数(整数)を介してリポジトリごとに構成できます。 - avatar
-
アバター(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
-
「ブロブ」ビューでサーバー側構文ハイライトサポートします。
$height_bin
プログラムが使用可能である必要があるため(上記の「構成変数」セクションの、この変数の説明を参照)、デフォルトで無効になっています。この機能は、リポジトリの
gitweb.highlight
構成変数(ブール値)を介してリポジトリごとに構成できます。 - remote_heads
-
「ヘッド」リストにリモートヘッド(リモート追跡ブランチ)を表示できるようにします。ほとんどの場合、リモート追跡ブランチのリストは不要な内部プライベート詳細であるため、この機能はデフォルトで無効になっています。 git-instaweb(1) は、通常、ローカルリポジトリを参照するために使用され、この機能を有効にして使用します。
この機能は、リポジトリの
gitweb.remote_heads
構成変数(ブール値)を介してリポジトリごとに構成できます。
以下の、残りの機能は、プロジェクトごとにオーバーライドすることはできません。
- search
-
テキスト検索を有効にします。これにより、作者(author)または、コミッターまたは、コミットテキストが特定の文字列に一致するコミットが一覧表示されます。 git-log(1) のmanpage にある
--author
と--committer
と--grep
オプションの説明を参照してください。デフォルトで有効になっています。プロジェクト固有のオーバーライドはサポートされていません。
- forks
-
この機能が有効になっている場合、gitwebは、プロジェクトルート(ベース名)のサブディレクトリ内のプロジェクトを既存のプロジェクトのフォークと見なします。
$projname.git
プロジェクトごとに、$projname/
ディレクトリ内のプロジェクトとそのサブディレクトリはメインプロジェクトリストに表示されません。代わりに、$projname
の横に+
マークが表示されます。これは、すべてのフォーク($projname/
サブディレクトリ内のすべてのプロジェクト)を一覧表示する "forks" ビューにリンクしています。さらに、プロジェクトの「fork」ビューは、プロジェクトの概要ページからリンクされています。プロジェクトリストがファイルから取得された場合(
$projects_list
はファイルを指している)、フォーク(fork)は、そのファイルのメインプロジェクトの後にリストされている場合にのみ認識されます。プロジェクト固有のオーバーライドはサポートされていません。
- actions
-
すべてのプロジェクトページのアクションバーへのカスタムリンクを挿入します。これにより、あなたはgitwebに統合されているサードパーティのスクリプトにリンクできます。
「default」値は、
("<label>", "<link>", "<position>")
という3要素組形式の、リストで構成されます。ここで、 "position" は、リンクを挿入するラベルです。 "link" はフォーマット文字列で、%n
はプロジェクト名に展開され、%f
はファイルシステム内のプロジェクトパス(つまり "$projectroot/$project")に展開され、%h
は現在のハッシュ(h
gitwebパラメーター)、%b
は現在のハッシュベース(hb
'gitwebパラメーター) です。%%
は%
に展開されます。たとえば、このページが作成された時点で、 http://repo.or.cz Gitホスティングサイトは、グラフィカルログを有効にするために次のように設定しました(サードパーティツール git-browser を使用):
$feature{'actions'}{'default'} = [ ('graphiclog', '/git-browser/by-commit.html?r=%n', 'summary')];
これにより、「summary」リンクの後に「graphiclog」というタイトルのリンクが追加され、クエリパラメータとして
r=<project>
を渡して、git-browser
スクリプトへ誘導します。プロジェクト固有のオーバーライドはサポートされていません。
- timed
-
ページフッター(ページの下部)に各ページを生成して表示するのにかかった時間とGitコマンドの数を表示できるようにします。たとえば、フッターには次のように含まれます。「This page took 6.53325 seconds and 13 Git commands to generate.」(このページの生成には6.53325秒と13のGitコマンドが必要でした。)。デフォルトでは無効になっています。
プロジェクト固有のオーバーライドはサポートされていません。
- javascript-timezone
-
JavaScriptを介してgitweb出力の日付の共通タイムゾーンを変更する機能を有効にして構成します。 gitweb出力の日付には、「commit」ビューと「commitdiff」ビューと「log」ビューでのauthordateとcommitterdate、および「tag」ビューでのtaggerdateが含まれます。デフォルトで有効になっています。
値は、3つの値のリストです。デフォルトのタイムゾーン(default time zone)(クライアントが他のタイムゾーンを選択してCookieに保存していない場合)と、選択したタイムゾーンを保存するCookieの名前と、操作の日付をマークアップするために使用されるCSSクラスです。この機能をオフにする場合は、「default」を空のリストに設定します。つまり
[]
。通常のgitweb構成ファイルでは、最初の、(default)タイムゾーンのみを変更し、他の要素はデフォルト値のままにします:
$feature{'javascript-timezone'}{'default'}[0] = "utc";
ここに示されている構成例は、下位互換性と上位互換性が保証されています。
タイムゾーンの値は、 "local"(ブラウザが使用するローカルタイムゾーンの場合)、"utc"(JavaScriptまたは、この機能が無効になっている場合にgitwebが使用するもの)、または "
0200" のような "
/-HHMM" 形式の数値のタイムゾーンにすることができます。プロジェクト固有のオーバーライドはサポートされていません。
- extra-branch-refs
-
"refs" の下にある、ブランチのrefとして使用される追加ディレクトリのリスト。たとえば、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
構成変数を介して、リポジトリごとに構成できます。これには、スペースで区切られたrefのリストが含まれます。 例:[gitweb] extraBranchRefs = sandbox wip other
gitweb.extraBranchRefsは実際には複数値の構成変数であるため、以下の例も正しくて、結果は上記のスニペットと同じです:
[gitweb] extraBranchRefs = sandbox extraBranchRefs = wip other
「gitcheck-ref-format」の精査に合格しないrefを指定するとエラーになります。 重複した値はフィルタリングされます。
EXAMPLES
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'];
BUGS
フォールバック構成ファイル(/etc/gitweb.conf
)とその場所をオーバーライドする環境変数(GITWEB_CONFIG_SYSTEM)に、「fallback」の役割を反映した名前が付いていると、デバッグが容易になります。 現在の名前は、作業セットアップを壊さないように保持されます。
ENVIRONMENT
インスタンスごとおよびシステム全体の構成ファイルの場所は、以下の環境変数を使用してオーバーライドできます:
- GITWEB_CONFIG
-
インスタンスごとの構成ファイルの場所を設定します。
- GITWEB_CONFIG_SYSTEM
-
フォールバックするシステム全体の構成ファイルの場所を設定します。 このファイルは、インスタンスごとのファイルが存在しない場合にのみ読み取られます。
- GITWEB_CONFIG_COMMON
-
共通のシステム全体の構成ファイルの場所を設定します。
FILES
-
gitweb_config.perl
-
これは、インスタンスごとの構成ファイルのデフォルト名です。このファイルの形式は前述のとおりです。
-
/etc/gitweb.conf
-
これは、フォールバックするシステム全体の構成ファイルのデフォルト名です。このファイルは、インスタンスごとの構成変数が見つからない場合にのみ使用されます。
-
/etc/gitweb-common.conf
-
これは、共通システム全体の構成ファイルのデフォルト名です。
SEE ALSO
gitweb/README
, gitweb/INSTALL
GIT
Part of the git(1) suite