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_COMMONGITWEB_CONFIG_SYSTEMGITWEB_CONFIG を使用して定義されます。

あなたは環境変数 GITWEB_CONFIG_COMMONGITWEB_CONFIG_SYSTEMGITWEB_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';

以下で説明する構成変数は、いくつかの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