Git
日本語 ▾ トピック ▾ 最新バージョン ▾ gitweb.conf は 2.44.0 で最後に更新されました

名前

gitweb.conf - Gitweb(Git Webインターフェース)の設定ファイル

概要

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

説明

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_COMMONGITWEB_CONFIG_SYSTEM、およびGITWEB_CONFIG)を使用して定義されます。

また、次の環境変数を非空の値に設定することにより、実行時にgitweb設定ファイルの場所を上書きできます:GITWEB_CONFIG_COMMONGITWEB_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 で使用されます。

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 "モジュール" から生成されます。

すべてのページの上部にあるホームリンクのターゲット(ビューの「パンくずリスト」の最初の部分)。デフォルトでは、現在のページの絶対 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 設定変数(ブール値)を使用して、リポジトリごとに設定できます。

残りの機能は、プロジェクトごとに上書きすることはできません。

テキスト検索を有効にします。これにより、著者、コミッター、またはコミットテキストが指定された文字列に一致するコミットが一覧表示されます。 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)の名前が、その「フォールバック」の役割を反映したものであれば、デバッグが容易になります。現在の名前は、動作中の設定を壊さないように維持されています。

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

git[1] スイートの一部

scroll-to-top