hgrc

Mercurial の設定ファイル

Author: Bryan O'Sullivan <bos@serpentine.com>
Organization: Mercurial
Manual section:5
Manual group:Mercurial Manual

Contents

説明

Mercurial では、 挙動を制御するために、 複数の設定ファイルを使用します。

Mercurial の設定ファイルは、 いわゆる ini ファイル形式で記述されます。 設定ファイルは、 「セクション」から構成され、 各セクションは [セクション名] 形式のヘッダで始まり、 名前 = 値 形式の要素が列挙されます:

[ui]
username = Firstname Lastname <firstname.lastname@example.net>
verbose = True

上記記述はそれぞれ、 ui.username および ui.verbose として参照されます。 後述する文法の詳細を参照してください。

ファイル

Mercurial は複数のファイルから設定情報を読み込みます。 読み込み対象となるファイルは、 事前に存在しませんので、 適切な位置にファイルを作成するのは、 利用者の責任となります。 ユーザ名設定のような、 広範囲に渡る設定は、 %USERPROFILE%\mercurial.ini$HOME/.hgrc に、 もっと狭い範囲に関する設定は、 各リポジトリ毎の <リポジトリ>/.hg/hgrc において記述するのが一般的です。

設定ファイルの名前 (パス) は、 Mercurial の稼動環境に依存します。 単一ディレクトリ直下の *.rc ファイルを読み込む場合、 ファイル名のアルファベット順で読み込まれ、 先に読み込んだ設定よりも、 後から読み込んだ設定の方が優先されます。 以下に列挙されるパスにおいて、 複数から設定が読み込まれた場合は、 列挙順の早い方の設定が優先されます。

(共通) <リポジトリ>/.hg/hgrc
個々のリポジトリにのみ適用される、 リポジトリ毎設定。 本ファイルは構成管理対象外であり、 hg clone によって伝播することもありません。 本ファイルでの設定は、 以下に述べる全ての設定ファイルに優先します。 Unix および Plan 9 環境において、 本ファイルの所有者/グループが、 信頼できない場合、 本ファイル中の設定の大半は無視されます。 詳細に関しては、 後述する trusted セクションの説明を参照してください。
(Plan 9) $home/lib/hgrc
(Unix) $HOME/.hgrc
(Windows) %USERPROFILE%\.hgrc
(Windows) %USERPROFILE%\Mercurial.ini
(Windows) %HOME%\.hgrc
(Windows) %HOME%\Mercurial.ini
Mercurial を実行するユーザのための、 ユーザ毎設定。 Windows 9x 環境での %HOME%%APPDATA% に相当します。 本ファイルでの設定は、 当該ユーザの全ての Mercurial コマンド実行に適用されます。 本ファイルでの設定は、 システム毎/インストール毎の設定より優先されます。
(Plan 9) /lib/mercurial/hgrc
(Plan 9) /lib/mercurial/hgrc.d/*.rc
(Unix) /etc/mercurial/hgrc
(Unix) /etc/mercurial/hgrc.d/*.rc
Mercurial の稼動環境におけるシステム毎設定。 本ファイルでの設定は、 実行ユーザ/実行位置に関わらず、 全ての Mercurial コマンド実行に適用されます。 本ファイルでの設定は、 インストール毎設定より優先されます。
(Plan 9) <インストール先>/lib/mercurial/hgrc
(Plan 9) <インストール先>/lib/mercurial/hgrc.d/*.rc
(Unix) <インストール先>/etc/mercurial/hgrc
(Unix) <インストール先>/etc/mercurial/hgrc.d/*.rc
Mercurial のインストール先から読み込まれる、 インストール毎設定。 <インストール先> は、 実行される hg コマンド (またはシンボリックリンク) の親ディレクトリを意味します。 例えば、 /shared/tools/bin/hg が実行される場合、 /shared/tools/etc/mercurial/hgrc が読み込まれます。 本ファイルでの設定は、 実行ユーザ/実行位置に関わらず、 当該 Mercurial コマンドの実行の全て対して適用されます。
(Windows) <インストール先>\Mercurial.ini or
(Windows) <インストール先>\hgrc.d\*.rc or
(Windows) HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial
Mercurial の稼動環境における、 インストール毎/システム毎設定。 本ファイルでの設定は、 実行ユーザ/実行位置に関わらず、 当該 Mercurial コマンドの全ての実行に対して適用されます。 レジストリキーは PATH 環境変数的な値を保持し、 値の各要素は、 ファイル Mercurial.ini を参照するか、 *.rc ファイルを格納するディレクトリでなければなりません。 1つ以上の設定ファイルが検出されるまで、 Mercurial は記述順序通りに、 各位置のファイル所在確認を行います。

Note

32-bit Python を 64-bit Windows で動作させる場合は、 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mercurial レジストリキーが使用されます。

文法

設定ファイルは、 「セクション」から構成され、 各セクションは [セクション名] 形式のヘッダで始まり、 名前 = 値 形式の要素 (『名前』は『設定キー』とも呼ばれます) が列挙されます:

[spam]
eggs=ham
green=
   eggs

設定記述は一行一エントリです。 但し、 後続行が字下げされている場合は、 エントリ記述が継続しているものとみなされます。 値記述の先頭の (半角) 空白文字は除外されます。 空行は無視されます。 # または ; で始まる行は、 コメント行として無視されます。

同一設定キーに対して、 複数回の記述が可能ですが、 Mercurial は最後に設定された値を使用します。 例えば:

[spam]
eggs=large
ham=serrano
eggs=small

上記記述の場合、 設定キー eggs の値として採用されるのは small です。

同一セクションを複数回記述することも可能です。 複数回の記述場所は、 同一ファイル中でも、 異なる設定ファイル間でも構いません。 例えば:

[foo]
eggs=large
ham=serrano
eggs=small

[bar]
eggs=ham
green=
   eggs

[foo]
ham=prosciutto
eggs=medium
bread=toasted

上記の設定記述の場合、 foo セクションの eggsham および bread 設定キーの値はそれぞれ mediumprosciutto および toasted となります。 各設定キー毎に、 最後に設定された値が有効になるのです。

同一設定キーに対して、 異なるファイルでそれぞれ設定が記述された場合、 「最後の設定値」はファイルの読み込み順序に依存します。 先の ファイル セクションでのパスの列挙順が、 より早い方が優先されます。

%include file 形式の記述によって、 当該設定ファイルにおいて file が読み込まれます。 読み込みは再帰的に実施されるため、 読み込み対象ファイルから、 他のファイルを読み込むことも可能です。 ファイル名は、 %include 記述のあるファイルに対して、 相対的なものとみなされます。 file における環境変数や ~user 形式の記述は展開されます。 そのため、 以下のような記述によって:

%include ~/.hgrc.d/$HOST.rc

ホスト毎に異なる設定ファイルを読み込む事が可能です。

当該セクションにおいて、 既に name が設定されている場合、 %unset name 形式の記述によって、 設定を破棄する事が可能です。

設定する値には、 自由形式の文字列、 文字列の列挙、または真偽値の、 いずれでも指定可能です。 真偽値の設定では、 "1"、 "yes"、 "true" または "on" のいずれもが真値、 "0"、 "no"、 "false" または "off" のいずれもが偽値とみなされます。 (文字大小は無視されます)

列挙における各値は、 空白文字またはコンマで区切られますが、 二重引用符 (") で囲まれた部位は分割されません:

allow_read = "John Doe, PhD", brian, betty

バックスラッシュを前に付ける事で、 引用符自体を記述する事が可能です。 語の冒頭位置以外の引用符は、 引用符とはみなされません。 (例: foo"bar bazfoo"barbaz の列挙とみなされます)

セクション

Mercurial の設定ファイルで記述可能な各セクション毎の、 用途、 設定キー、 および設定可能な値について以下で述べます。

alias

コマンドの別名 (エイリアス) 定義。 別名は、 他のコマンド (またはエイリアス) や、 付加的な引数を使って、 自分独自のコマンドの定義を可能にします。 別名定義における $1$2 のような位置指定引数は、 実行前に Mercurial によって置換されます。 別名定義中で $N 形式による参照の無かった全ての引数は、 実行されるコマンドの末尾に付与されます。

別名定義では、 以下の形式の行を記述します:

<別名> = <コマンド> [<引数>]...

例えば、 以下の定義では:

latest = log --limit 5

最新の 5 リビジョンのみを表示する latest コマンドが定義されます。 定義済みの別名を用いて、 違う別名を定義することも可能です:

stable5 = latest -b stable

Note

既存コマンドと同名の別名定義は、 既存コマンドを上書きします。 このような別名定義は、 大概悲惨な結果を招きます!

感嘆符 (!) から始まる別名定義は、 シェル別名を意味します。 シェル別名はシェルによって解釈され、 任意のコマンド実行が可能です。 例えば以下の定義によって:

echo = !echo $@

hg echo foo 実行は、 端末に foo を表示します。 より実践的な例としては:

purge = !$HG status --no-status --unknown -0 | xargs -0 rm

hg purge 実行は、 作業領域中の全ての未知のファイルを、 purge エクステンションと同じ作法で削除します。

別名定義での $1$2 等の位置指定引数は、 別名コマンド実行の際に、 コマンド行で指定された、 対応する引数で置換されます。 対応引数が無い場合、 引数不足で処理が中断されます。 $0 はコマンド別名そのもの、$@ は全引数を空白区切りしたもので、それぞれ置換されます。 引数の置換は、 シェルによるコマンド行解釈よりも、 前に実施されます。

シェル別名では、 環境変数 $HG が、 別名コマンドを実行する Mercurial のパスに置換されます。 この仕様は、 先の purge 別名のように、 シェル別名において Mercurial を実行する場合に有用です。 更に、 環境変数 $HG_ARGS は Mercurial への引数に置換されますので、 先述した hg echo foo では、 $HG_ARGSecho foo に置換されます。

Note

幾つかのグローバルオプション (例: -R) の処理は、 シェル別名の解釈前に実施されるため、 シェル別名に対して、 これらを指定することはできません。

annotate

ファイル中の行の由来表示に関する設定。 全ての値が真偽値で、 デフォルト値は False です。 diff コマンドに関連するオプションの詳細は、 diff セクションを参照してください。

ignorews
差分検出における空白文字無視の有無。
ignorewsamount
差分検出における空白文字数増減無視の有無。
ignoreblanklines
差分検出における空行増減無視の有無。

auth

HTTP 認証のための認証情報。 本セクションでは、 HTTP サーバへのログインで使用される、 ユーザ名/パスワードを記述します。 HTTP サーバ側において、 ログイン可能ユーザを制御する場合の詳細は、 [web] セクションを参照してください。

設定は以下の形式で記述されます:

<名前>.<引数> = <値>

<名前> は引数群を1つの認証情報エントリに束ねる働きをします。 例えば:

foo.prefix = hg.intevation.org/mercurial
foo.username = foo
foo.password = bar
foo.schemes = http https

bar.prefix = secure.example.org
bar.key = path/to/file.key
bar.cert = path/to/file.cert
bar.schemes = https

利用可能な引数を以下に示します:

prefix
* または URI (scheme 部分の記述は任意)。 最長マッチする prefix 指定を持つ認証情報が使用されます。 (* は全てにマッチし、 マッチ長は 1 とみなされます) prefix 指定が scheme 部分を持たない場合、 scheme 部分を取り除いた URI に対する prefix のマッチングの後で、 (後述する) scheme 引数によるマッチングが行われます。
username
省略可。 認証におけるユーザ名。 本引数の指定が無く、 且つログイン時に basic または digest 認証が要求された場合、 対話的入力が要求されます。 foo.username = $USER 形式の記述では、 環境変数が置換されます。 URI がユーザ名を含む場合、 選択対象となる [auth] のエントリは、 ユーザ名が合致するものか、 ユーザ名が無いものだけです。
password
省略可。 認証におけるパスワード。 本引数の指定が無く、 且つログイン時に basic または digest 認証が要求された場合、 対話的入力が要求されます。
key
省略可能。 PEM 符号化されたクライアント証明書鍵ファイル。 ファイル名指定では、 環境変数の置換が実施されます。
cert
省略可能。 PEM 符号化されたクライアント証明書連鎖ファイル。 ファイル名指定では、 環境変数の置換が実施されます。
schemes
省略可能。 空白で区切った、 認証で使用される URI scheme の一覧。 prefix 引数に scheme が含まれない場合にのみ使用されます。 http および https が指定可能です。 それぞれ static-http および static-https にもマッチします。 デフォルト値: https

ログイン時に認証が要求され、 且つ適切な認証情報記述が無い場合、 認証情報に関する対話的入力が要求されます。

committemplate

本セクションでの changeset 設定は、 コミット時のエディタ起動の際に、 表示されるテキストのカスタマイズに使用されます。

既存のテンプレートキーワードの他に、 本セクションでの定義でのみ有効な、 以下のテンプレートキーワードが使用できます:

extramsg
文字列。 追加メッセージ (通常は 'メッセージが空のままならコミットを 中止します。') 実行されるコマンドによって、指定される内容が、 異なる場合があります。 (※ 訳注: MQ 系コマンドで異なる内容になります)

例えば、 以下のような設定記述により、 カスタマイズ未実施の際の表示と、 全く同じ内容の情報が表示されます:

[committemplate]
changeset = {desc}\n\n
   HG: コミットログを入力してください。'HG:' で始まる行は無視されます。
   HG: {extramsg}
   HG: --
   HG: ユーザ: {author}\n{ifeq(p2rev, "-1", "",
  "HG: ブランチのマージ\n")
  }HG: ブランチ '{branch}'\n{if(currentbookmark,
  "HG: ブックマーク '{currentbookmark}'\n")  }{subrepos %
  "HG: サブリポジトリ {subrepo}\n"           }{file_adds %
  "HG: {file} を追加\n"                      }{file_mods %
  "HG: {file} を変更\n"                      }{file_dels %
  "HG: {file} を削除\n"                      }{if(files, "",
  "HG: ファイル変更なし\n")}

Note

問題のある文字コード (詳細は hg help win32mbcs 参照) を使う場合、 本機能によるカスタマイズは、 表示内容が崩れないように注意が必要です。

例えば、 バックスラッシュ (0x5c) で終了する複数バイト文字が、 ASCII 文字の n を後ろに伴うようなテンプレート定義では、 この2バイトが、 改行文字扱いされてしまいます (先行する複数バイト文字も崩れます)。 (※ 訳注: cp932/Shift-JIS では「ソ」や「能」などが該当します)

カスタマイズ用テンプレートは、 以下のコマンドで利用されます (エディタ起動のために --edit オプションが必要な場合もあります):

decode/encode

リポジトリ/作業領域間の入出力における、 ファイル変換フィルタの指定。 改行形式の変換に代表される、 ファイルの地域化/正規化に使用されます。

フィルタは、 フィルタコマンドを伴ったフィルタパターンで指定されます。 デフォルトのパターン指定形式は、 作業領域ルートからの相対パスに対して、 パス先頭からのパターン合致で判定する、 ワイルドカード形式 (glob) です。 例えば、 ルート直下の .txt 拡張子のファイルにのみ合致させるパターンは *.txt となります。 作業領域中の .c 拡張子の全ファイルへの合致は、 **.c となります。 それぞれのファイルに適用されるフィルタは、 最初にマッチしたパターンのものだけです。

フィルタコマンドの記述は pipe: または tempfile: で開始可能です。 特に指定が無い場合は、 pipe: 指定相当とみなされます。

pipe: 指定のフィルタコマンドは、 標準入力からデータを読み込み、 変換済みデータを標準出力に書き出さなければなりません。

pipe フィルタ例を以下に示します:

[encode]
# 差分記録の圧縮効果向上のため、コミット時に gzip ファイルを解凍。
# 備考: あくまで例示であり、この方式自体はあまり良い案ではありません
*.gz = pipe: gunzip

[decode]
# 作業領域への取り出しの際に gzip ファイルを再圧縮
# (デフォルトである "pipe:" 指定は省略可能)
*.gz = gzip

tempfile: 指定のフィルタコマンドは、 テンプレート形式で記述します。 INFILE 記述は、 処理対象データが格納された一時ファイルのパスに、 OUTFILE 記述は、 処理結果を格納する (空の) 一時ファイルのパスに、 それぞれ置換されます。

Note

標準的なシェルの I/O リダイレクトが、 予期せぬ結果や、 ファイル内容の破壊に繋がる Windows のような環境では、 tempfile 機構の使用がお勧めです。

Windows (CRLF) と Unix (LF) 環境間における改行形式の変換を行う eol エクステンションは、 内部的にフィルタ機構を使用しています。 改行形式変更には、 eol エクステンションの利用をお勧めします。

defaults

(defaults の使用は非推奨です。 alias を使用してください)

[defaults] セクションは、 指定コマンドに対する、 デフォルトのオプション/引数指定の記述に使用します。

以下の記述は、 hg log の常時 verbose モード実行と、 hg status の変更ファイル限定表示化の例です:

[defaults]
log = -v
status = -m

alias 定義で上書きされたコマンドでも、 元々のコマンドの方が defaults 定義対象となります。 alias 定義コマンドも defaults 定義対象となります。

diff

差分表示の設定。 unified 以外の全ての設定は真偽値で、 デフォルト値は False です。 annotate コマンドに関連するオプションの詳細は、 annotate セクションを参照してください。

git
git 拡張 diff 形式使用の有無。
nodates
差分ヘッダ部分からの日付情報除外の有無。
showfunc
変更が生じた関数の名前表示の有無。
ignorews
差分検出における空白文字無視の有無。
ignorewsamount
差分検出における空白文字数増減無視の有無。
ignoreblanklines
差分検出における空行増減無視の有無。
unified
差分出力におけるコンテキスト行の行数。

email

電子メールを送信するエクステンション向けの設定。

from
省略可能。 送信するメールの "From" ヘッダと SMTP エンベロープに使用する電子メールアドレス。
to
省略可能。 宛先電子メールアドレスのカンマ区切り。
cc
省略可能。 CC 宛先電子メールアドレスのカンマ区切り。
bcc
省略可能。 BCC 宛先電子メールアドレスのカンマ区切り。
method
省略可能。 電子メールの送信方式。 smtp (デフォルト値) が設定された場合、 直接 SMTP を使用して送信します。 (設定詳細は [smtp] セクション詳細を参照) それ以外の値の場合は、 sendmail と同様に振舞う (-f で送信元を指定、 コマンド行で宛先一覧を指定、 標準入力で送信内容の受け取り) 電子メール送信プログラムとみなします。 sendmail でのメール送信では、 通常は sendmail または /usr/sbin/sendmail と設定すれば十分です。
charsets

省略可能。 宛先において都合の良い文字符号化方式のカンマ区切り。 電子メールのアドレス指定、 ヘッダ群、 およびパッチ 「以外」 のマルチパート部分は、 ローカル符号化方式 ($HGENCODING または ui.fallbackencoding で指定) からの変換に成功した、 「最初の」符号化方式で符号化されます。 変換に失敗した場合、 そのままのデータが送信されます。 デフォルトの設定は空のリストです。

電子メールの文字符号化方式は以下の順序で確定します:

  1. us-ascii: 設定に関わらず常に最初
  2. email.charsets: ユーザ指定の順序通り
  3. ui.fallbackencoding: email.charsets で指定されていない場合。
  4. $HGENCODING: email.charsets で指定されていない場合。
  5. utf-8: 設定に関わらず常に最後

email セクションの設定例を以下に示します:

[email]
from = Joseph User <joe.user@example.com>
method = /usr/sbin/sendmail
# 西欧圏向けの文字符号化設定
# 最初と最後に確認される us-ascii と utf-8 の記述は省略
charsets = iso-8859-1, iso-8859-15, windows-1252

extensions

Mercurial には、 機能追加のための、 エクステンション機構が備わっています。 個々のエクステンションを有効にするには、 本セクションにおいて、 対応するエントリを記述する必要があります。

エクステンションの実装が、 Python の検索パス上にある場合、 モジュール名に続けて = を記述するだけ (右辺値は不要) です。

それ以外の場合、 任意の名前に続けて = を記述した後ろに、 エクステンションを実装した .py ファイルへのパス (ファイル名含む) を記述してください。

先に読み込まれた設定ファイルにおいて、 有効化済みのエクステンションを、 明示的に無効化したい場合は、 foo = !/ext/path あるいは foo = ! のように、 値の先頭に ! が来るような設定を記述してください。

~/.hgrc 記述例を以下に示します:

[extensions]
# (progress エクステンションは Mercurial 同梱のものが読み込まれます)
progress =
# (以下のエクステンションは指定のパスから読み込まれます)
myfeature = ~/.hgext/myfeature.py

format

usestore
ファイル名の文字大小を認識しないようなファイルシステムへの、 適応性を向上させる、 "store" 形式リポジトリの使用可否。 デフォルトでは有効化されています。 この設定を無効化した場合、 新規作成したリポジトリは、 0.9.4 以前の Mercurial と、 ディスク記録形式で互換性が保たれますが、 状況次第では、 長いファイル名での保存が必要になります。
usefncache
"store" 形式リポジトリ (本設定の有効化に必須) において、 長いファイル名を使用するための機能向上や、 "nul" のような Windows 予約名利用を回避可能にする、 "fncache" 形式リポジトリの使用可否。 デフォルトでは有効化されています。 この設定を無効化した場合、 新規作成したリポジトリは、 1.1 以前の Mercurial と、 ディスク記録形式で互換性が保たれます。
dotencode
"fncache" 形式リポジトリ (本設定の有効化に必須) において、 Mac OS X では ._ 、Windows では空白文字で始まるファイル名が、 原因となって発生する問題を、 回避するための "dotencode" 形式リポジトリの使用可否。 デフォルトでは有効化されています。 この設定を無効化した場合、 新規作成したリポジトリは、 1.7 以前の Mercurial と、 ディスク記録形式で互換性が保たれます。

graph

ウェブでのグラフ表示設定。 本セクションでは、 グラフの表示要素に対して、 設定を変更できます (例: default ブランチを目立たせる)。

設定は以下の形式で記述されます:

<ブランチ名>.<引数> = <値>

<ブランチ名> は設定変更対象のブランチ名です。例えば:

[graph]
# 幅を2ピクセルに変更
default.width = 2
# 色を赤に変更
default.color = FF0000

利用可能な引数を以下に示します:

width
ブランチにおけるの線幅を、 ピクセル単位で指定。
color
ブランチにおける線の色を、 16進 RGB 表記で指定。

hooks

commit の開始/終了といった様々な処理契機において、 自動実行されるコマンド、または Python 関数。 処理契機名に接尾辞 (suffix) を追加した記述をする事で、 同一処理契機に複数のフックを実行可能です。 先に読み込まれた設定 (例: ホスト毎設定) におけるフック設定は、 別な値を設定するか、 空値の設定により、 上書き可能です。 フック名の前に priority を追加した設定値を新たに定義し、 値を設定することで、 フック実行の優先度を設定できます。 デフォルトの優先度設定値は 0 です。 (※ 訳注: 優先度値が大きいフックの方が先に実行されます)

.hg/hgrc 設定例を以下に示します:

[hooks]
# 履歴の取り込み毎に作業領域を更新
changegroup.update = hg update
# ホスト毎設定の無効化
incoming =

incoming.email = /my/email/hook
incoming.autobuild = /my/build/hook
# 他の incoming に先立って autobuild フックを実行
priority.incoming.autobuild = 1

殆どのフックは、 有用な付加情報を持つ環境変数設定と共に実行されます。 以下に示すフック群に渡される環境変数は $HG_foo 形式の名前を持ちます。

changegroup
push、 pull、 unbundle によるリビジョン群の追加完了時に実行されます。 新規追加リビジョン群の最初の ID が $HG_NODE に、 追加リビジョン群の取り込み元 URL が $HG_URL に設定されます。 (※ 訳注: 複数リビジョン一括追加時の changegroup フック実行は1回ですが、 incoming フックはリビジョン毎に実行されます)
commit
手元のリポジトリにおける新規リビジョン作成完了時に実行されます。 新規作成リビジョンの ID が $HG_NODE に、親リビジョンの ID が $HG_PARENT1 および $HG_PARENT2 に設定されます。
incoming
push、 pull、 unbundle によるリビジョンの追加完了時に実行されます。 新規追加リビジョンの最初の ID が $HG_NODE に、 追加リビジョンの取り込み元 URL が $HG_URL に設定されます。 (※ 訳注: 複数リビジョン一括追加時の changegroup フック実行は1回ですが、 incoming フックはリビジョン毎に実行されます)
outgoing
他リポジトリへの変更反映完了後に実行されます。 新規追加リビジョン群の最初の ID が $HG_NODE に、 操作実施契機が $HG_SOURCE に設定されます。 "preoutgoing" フックの説明も参照してください。
post-<コマンド名>
指定コマンドが正常終了した際に実行されます。 当該コマンド実行の引数が $HG_ARGS に、 終了コードが $HG_RESULT にに設定されます。 当該コマンドの内部処理に渡される、 コマンド実行時引数の解析結果が、 $HG_PATS および $HG_OPTS に設定されますが、 これらに設定される値は、 内部的な Python データ形式の文字列です。 $HG_OPTS はオプションの辞書形式 (無指定オプションは、 デフォルト値が設定された状態)、 $HG_PATS は引数のリストです。 フック自身の実行失敗は無視されます。
pre-<コマンド名>
指定コマンドの実行前に実行されます。 当該コマンド実行の引数が $HG_ARGS に設定されます。 当該コマンドの内部処理に渡される、 コマンド実行時引数の解析結果が、 $HG_PATS および $HG_OPTS に設定されますが、 これらに設定される値は、 内部的な Python データ形式の文字列です。 $HG_OPTS はオプションの辞書形式 (無指定オプションは、 デフォルト値が設定された状態)、 $HG_PATS は引数のリストです。 フック実行が失敗した場合、 当該コマンドは実行されず、 Mercurial は実行失敗の終了コードを返します。
prechangegroup
push、 pull、 unbundle によるリビジョン群の追加前に実行されます。 終了コード 0 は、 処理の継続を意味します。 非 0 の終了コードは、 push、 pull、 unbundle の中断を意味します。 追加リビジョン群の取り込み元 URL が $HG_URL に設定されます。
precommit
手元のリポジトリにおける新規リビジョン作成前に実行されます。 終了コード 0 は、 処理の継続を意味します。 非 0 の終了コードは、 commit の中断を意味します。 親リビジョンの ID が $HG_PARENT1 および $HG_PARENT2 に設定されます。
prelistkeys
pushkey (bookmark のようなもの) の一覧取得前に実行されます。 非 0 の終了コードは、 処理の中断を意味します。 キーの名前空間が $HG_NAMESPACE に設定されます。
preoutgoing
他リポジトリへの変更反映において、 対象リビジョン確定前に実行されます。 非 0 の終了コードは、 処理の中断を意味します。 本フックによって、 HTTP や SSH 経由での変更反映を抑止可能です。 ローカルホスト上のリポジトリ間での pull や push または bundle コマンドも抑止可能ですが、 ファイルそのもののコピーが可能ですから、 実質的な抑止効果はありません。 操作実施契機が $HG_SOURCE に設定されます。 この環境変数に "serve" が設定されている場合、 SSH なり HTTP を経由した遠隔ホスト側が、 処理契機となっています。 "push"、 "pull" または "bundle" が設定されている場合、 同一ホスト上のリポジトリが処理契機となっています。
prepushkey
pushkey (bookmark のようなもの) の取り込み前に実行されます。 非 0 の終了コードは、 取り込み拒否を意味します。 キーの名前空間が $HG_NAMESPACE に、 キーが $HG_KEY に、 (更新の場合は) 旧値が $HG_OLD に、 新値が $HG_NEW に設定されます。
pretag
タグの新規生成前に実行されます。 終了コードが 0 の場合、 タグの生成が許可されます。 非 0 の終了コードは、 タグ生成を中断します。 タグ付け対象リビジョンの ID が $HG_NODE に、 タグ名が $HG_TAG に設定されます。 ローカルタグの場合は $HG_LOCAL=1 に、 通常のタグの場合は $HG_LOCAL=0 になります。
pretxnchangegroup
push、 pull、 unbundle によるリビジョン群の追加完了の際に、 トランザクションが完了する前に実行されます。 追加されるリビジョン群は、 フックから参照可能です。 そのため、 追加が確定する前に、 対象リビジョン群の内容を検証可能です。 新規追加リビジョン群の最初の ID が $HG_NODE に設定されます。 終了コードが 0 の場合、 トランザクションが確定します。 非 0 の終了コードの場合、 トランザクションが巻き戻され、 push、 pull、 unbundle は中断されます。 追加リビジョンの取り込み元 URL は $HG_URL に設定されます。
pretxncommit
新規リビジョン作成の際に、 トランザクションが完了する前に実行されます。 追加されるリビジョンは、 フックから参照可能です。 そのため、 コミットログや、 変更内容の検証が可能です。 終了コードが 0 の場合、 トランザクションが確定します。 非 0 の終了コードの場合、 トランザクションが巻き戻されます。 新規追加リビジョンの ID が $HG_NODE に、 親リビジョンの ID が $HG_PARENT1 および $HG_PARENT2 に設定されます。
preupdate
作業領域の更新前に実行されます。 終了コードが 0 の場合、 更新処理が実施されます。 非 0 の終了コードの場合、 更新処理は実施されません。 更新対象リビジョンの ID が $HG_PARENT1 に設定されます。 マージ契機の更新処理の場合、 第2親リビジョンの ID が $HG_PARENT2 に設定されます。
listkeys
pushkey (bookmark のようなもの) の一覧取得後に実行されます。 キーの名前空間が $HG_NAMESPACE に設定されます。 $HG_VALUES には、 キーと値からなる辞書情報が設定されます。
pushkey
pushkey (bookmark のようなもの) の取り込み後に実行されます。 キーの名前空間が $HG_NAMESPACE に、 キーが $HG_KEY に、 (更新の場合は) 旧値が $HG_OLD に、 新値が $HG_NEW に設定されます。
tag
タグの新規生成後に実行されます。 タグ付け対象リビジョンの ID が $HG_NODE に、 タグ名が $HG_TAG に設定されます。 ローカルタグの場合は $HG_LOCAL=1 に、 通常のタグの場合は $HG_LOCAL=0 になります。
update
作業領域の更新後に実行されます。 更新対象リビジョンの ID が $HG_PARENT1 に設定されます。 マージ契機の更新処理の場合、 第2親リビジョンの ID が $HG_PARENT2 に設定されます。 更新処理が成功した場合は $HG_ERROR=0 に、 失敗した場合 (例: 衝突解消の失敗等) は $HG_ERROR=1 が設定されます。

Note

コマンド実行に対する pre- または post- 付きの汎用フックは、 トランザクション確定の成否に影響しない状況で呼ばれるため、 汎用フックを使用する方がお勧めです。 "commit" のようなフックは、 hg commit 実行以外にも、 リビジョンを作成する契機 (例: hg tag) 全てにおいて呼ばれます。

Note

Windows のような環境では、 空値の環境変数が、 引き渡されない場合があります。 例えば、 非マージリビジョンの場合、 Unix 系環境では空値の $HG_PARENT2 が引き渡されますが、 Windows 環境では、 環境変数自身の引渡しがありません。

Python 関数のフック指定文法を以下に示します:

フック名 = python:モジュール名.サブモジュール名.関数名
フック名 = python:/モジュール/ファイル/への/パス.py:関数名

Python 関数のフックは、 Mercurial プロセス内部で実行されます。 各フックの起動では、 最低でも3つのキーワード引数が渡されます。 ui オブジェクト (ui キーワード)、 repository オブジェクト (repo キーワード)、 フック起動種別を示す hooktype キーワードの3つです。 フックの説明で示した環境変数は、 HG_ 無しで、 且つ小文字表記のキーワードを使用した、 キーワード引数として渡されます。

Python 関数フックの戻り値が "true" 相当値か、 実行中に例外が発生した場合、 処理失敗とみなされます。 (※ 訳注: 失敗の場合に "true" である点に注意)

hostfingerprints

既知の HTTPS サーバ証明書のフィンガープリント (fingerprint) 記述。 本セクションに記述のあるサーバと HTTPS で接続する場合、 サーバ証明書のフィンガープリントが、 記述と一致しなければ、 接続失敗とみなされます。 ssh における known_hosts 設定に相当します。 フィンガープリントは、 DER 符号化された証明書の SHA-1 ハッシュ値です。 フィンガープリント指定のあるサーバとの接続の場合、 CA 連鎖の確認や web.cacerts 設定は無視されます。

記述例を以下に示します:

[hostfingerprints]
hg.intevation.org = fa:1f:d9:48:f1:e7:74:30:38:8d:d8:58:b6:94:b8:58:28:7d:8b:d0

本機能は、 Python 2.6 以降でのみ使用可能です。

http_proxy

ウェブベースの Mercurial リポジトリアクセスで使用される HTTP プロキシ設定。

host
プロキシサーバのホスト名と (省略可能な) ポート番号。 設定例: "myproxy:8000"
no
省略可能。 プロキシを使用「しない」ホスト名一覧 (カンマ区切り)
passwd
省略可能。 プロキシサーバの認証用パスワード。
user
省略可能。 プロキシサーバの認証用ユーザ名。
always
省略可能。 http_proxy.no を無視して、 プロキシを常用するか否か。 真偽値。 デフォルト値: False

merge-patterns

特定のファイル名パターンと、 マージツールの関連付け。 本セクションでの関連付けは、 デフォルトのマージツール選択に優先します。 デフォルトのパターン指定形式は、 作業領域ルートからの相対パスに対して、 パス先頭からのパターン合致で判定する、ワイルドカード形式とみなされます。

記述例:

[merge-patterns]
**.c = kdiff3
**.jpg = myimgmerge

merge-tools

本セクションは、 ファイル毎のマージ処理のための、 外部ツールを設定します。 インストール時に事前設定されている可能性もあります。 既存の設定内容は、 hg config merge-tools で確認できます。 設定の詳細は hg help merge-tools も参照してください。

~/.hgrc での設定例を以下に示します:

[merge-tools]
# 既存ツールの実行パスを標準のものから変更
kdiff3.executable = ~/bin/kdiff3
# コマンド行形式の指定
kdiff3.args = $base $local $other -o $output
# 優先順位を高く設定
kdiff3.priority = 1

# 設定済みツール間での優先度の変更
vimdiff.priority = 0

# 固有ツールの設定
myHtmlTool.args = -m $local $other $base $output
myHtmlTool.regkey = Software\FooSoftware\HtmlMerge
myHtmlTool.priority = 1

利用可能な引数を以下に示します:

priority
当該ツールを選択する際の優先順位。 デフォルト値: 0
executable
実行可能ファイル名またはパス名。 Windows 環境では、 ${ProgramFiles} 環境変数を併用した記述が使用可能です。 デフォルト値: ツール名が自動的に設定
args
実行時にツールに指定される引数。 $base, $local, $other, $output といった表記により、マージ対象や、 結果格納先ファイルも、 指定可能です。 $local$other は、 実施する処理に応じて、 意味合いが変化します。 update や merge コマンドの場合、 $local はコマンド実施前時点の作業領域の、 $other は対象リビジョン時点の、 それぞれの内容を保持するファイルを指します。 一方で rebase の場合は、 $local が rebase 先、 $other が rebase 元リビジョン時点の、 それぞれの内容を保持するファイルを指します。デフォルト値: $local $base $other
premerge
外部ツール起動前の、 非対話的な内部 3-way マージツール実行の有無。 true および false 以外に、 事前マージが失敗した場合に、 マージマークを残したままにする keep を指定可能です。 デフォルト値: True
binary
当該ツールによる、 バイナリファイルのマージ可否。 デフォルト値は False ですが、 ツールの選択が、 ファイルパターンの合致で実施された場合は、 この設定値は無視されます。
symlink
当該ツールによる、 シンボリックリンクのマージ可否。 デフォルト値は False ですが、 ツールの選択が、 ファイルパターンの合致で実施された場合は、 この設定値は無視されます。
check

マージ成否判定方式の選択一覧 (複数指定可能):

changed
マージ結果と以前の内容に差分が無い場合、 マージ成否を問い合わせ。
conflicts
ツールの戻り値がマージ成功を示す場合でも、 衝突マークの有無を確認。
prompt
ツールの戻り値がマージ成功を示す場合でも、 常にマージ成否を問い合わせ。
fixeol
マージツールの実行による EOL 形式変更の是正の有無。 デフォルト値: False
gui
当該ツール実行における GUI 表示の要否。 デフォルト値: False
regkey
当該ツールのインストール位置を保持する Windows レジストリキー。 Mercurial は HKEY_CURRENT_USER または HKEY_LOCAL_MACHINE 配下の当該キーの有無を、 この順序で確認します。 デフォルト値: None
regkeyalt
指定されたレジストリキー不在時の、 代替 Windows レジストリキー。 regname および regappend による改変は、 代替キーでも実施されます。 典型的な用途は、 64 ビット環境における 32 ビットアプリの検索です。 デフォルト値: None
regname
当該レジストリキーから読み出す値の名前。 デフォルト値は、 (既定) からの読み出しです。
regappend
当該レジストリキーからの読み出し値に付加する値。 典型的な設定値は、 ツールの実行可能ファイル名です。 デフォルト値: None

patch

hg import や Mercurial Queues (MQ) エクステンション等による、 パッチ適用に関する設定。

eol
'strict' が設定された場合、 パッチファイルと、 パッチ対象ファイルは、 行末形式がそのまま維持されます。 lf または crlf が設定された場合、 パッチファイルとパッチ対象ファイルは、 行末形式が無視され、 LF (Unix 形式) または CRLF (Windows 形式) に正規化されます。 auto が設定された場合、 パッチファイルの行末形式は無視されますが、 パッチ対象ファイルの行末形式は、 ファイル毎の設定で正規化されます。 対象ファイルが存在しないか、 改行を含まない場合、 パッチファイルの行末形式がそのまま維持されます。 デフォルト値: strict

paths

リポジトリ位置へのシンボリックな名前の割り当て設定。 記述左辺にシンボル、 右辺にリポジトリ位置のディレクトリ、 または URL を記述します。 以下のシンボルを設定することで、 連携先リポジトリ指定が無い場合でも、 暗黙のパス指定とみなされます。 (※ 訳注: hg help urls も参照)

default
連携先指定が無い場合に、 hg pull に類するコマンドの、 連携対象となるリポジトリのディレクトリ、 または URL。 当該リポジトリが hg clone で生成された場合、 複製元リポジトリの URL が自動的に設定されます。
default-push
連携先指定が無い場合に、 hg push に類するコマンドの、 連携対象となるリポジトリのディレクトリ、 または URL。

任意の名前へのパス割り当てにより、 コマンドライン等でのリポジトリ指定で、 URL 指定の代わりにその名前を使用できます。設定例:

[paths]
my_path = http://example.com/path

以下のコマンド実行で my_path リポジトリに履歴が反映されます:

hg push my_path

phases

デフォルト時のフェーズの取り扱い設定。 フェーズ操作に関する詳細は hg help phases を参照してください。

publish
サーバとして機能する際の、 draft フェーズに対する挙動の設定。 True の場合、 クライアントから反映されたリビジョンのフェーズは、 クライアント/サーバ双方で public 化され、 クライアントに取り込み、 または複製されたリビジョンのフェーズは、 クライアント側でのみ public 化されます。デフォルト値: True
new-commit
新規作成されるリビジョンのフェーズ。 デフォルト値: draft
checksubrepos
サブリポジトリのフェーズ確認の有無。 "ignore"、 "follow" または "abort" が指定可能です。 "ignore" 以外が指定された場合、 親リポジトリのコミット前に、 サブリポジトリのフェーズを確認します。 親リポジトリ側フェーズよりも、サブリポジトリ側の公開度合が低い場合 (例: 親側の "draft" に対して、サブリポジトリ側が "secret")、 コミット中断 ("abort" 時)か、 サブリポジトリ側フェーズ値でコミット ("follow" 時)します。 デフォルト値: "follow"

profiling

プロファイリングの種別、 形式および出力先の設定。 指定可能な種別は、 精密プロファイル (名称: ls) と、 サンプリングプロファイル (名称: stat) の2種類です。

以下の説明では、 プロファイル期間に採取される生データの事を 'プロファイルデータ'、 プロファイルデータを元にした、 テキスト形式の統計報告を 'プロファイル報告' と呼称します。 プロファイル採取には、 lsprof が用いられます。

type

使用するプロファイラ種別。 デフォルト値: ls.

ls
Python 組み込みの詳細プロファイラ。 どの環境でも利用できますが、 報告される行番号は、 常に関数の冒頭行に固定されます。 そのため、 入り組んだ関数内部の、 高コストな部位は、 特定が困難です。
stat
サードパーティ製の statprof。 現時点では Unix 環境でのみ使用でき、 0.1 秒以上を要するコマンド実行の解析で有用です。
format

プロファイル形式。 詳細プロファイラ ls 固有の設定。 デフォルト値: text

text
プロファイル報告を生成。 プロファイル報告をファイルに保存する場合、 プロファイルデータは保存されない点に注意してください。
kcachegrind
プロファイルデータを kcachegrind 形式化。 ファイルに保存する場合、 当該ファイルは直接 kcachegrind で読み込めます。
frequency
サンプリング頻度。 サンプリングプロファイラ stat 固有の設定。 デフォルト値: 1000.
output
プロファイルデータ、 または統計報告の保存先。 既存ファイルが指定された場合、 ファイルは上書きされます。 デフォルト値: None (結果は標準エラー出力から出力)
sort
出力の整列。 詳細プロファイラ ls 固有の設定。 callcount, reccallcount, totaltime または inlinetime から1つを指定してください。 デフォルト値: inlinetime
limit
表示対象行数。 詳細プロファイラ ls 固有の設定。 デフォルト値: 30
nested
個々のメインエントリ以後の、 掘り下げ (drill-down) 情報表示の、 最大行数。 Total と Inline の差の説明を助けます。 詳細プロファイラ ls 固有の設定。 デフォルト値: 5

revsetalias

revsets 機能の別名定義。 詳細は hg help revsets を参照してください。

server

一般的なサーバ機能の設定。

uncompressed
クライアントからの、非圧縮プロトコルでの hg clone 要求に対する、 許可の可否。 通常の転送と比較して、 データ量が 40% 程度増加しますが、 サーバ/クライアント双方で、 メモリや CPU の消費が低減します。 LAN (100 Mbps またはそれ以上) や高速 WAN 経由であれば、 通常形式よりも高速 (最大 10 倍程度) です。 転送データ量が増加することから、 一般的な WAN 接続 (概ね 6 Mbps 以下) では、 非圧縮形式の方が低速です。 転送データが確定するまでの間は、 非圧縮形式であっても、 一時的な書き込みロックが保持されます。 デフォルト値: True
preferuncompressed
真値が設定された場合、 クライアントは非圧縮での転送を試みます。 デフォルト値: False
validate
反映対象リビジョンの、 完全性検証の要否。 マニフェスト中の全ての更新情報が、 転送内容に含まれているか否かで、 データの完全性を確認します。 デフォルト値: False

smtp

電子メールを送信するエクステンション向け設定。

host
メールサーバのホスト名。 設定例: "mail.example.com"
port
省略可能。 メールサーバのポート番号。 デフォルト値: 465 (tls 設定が smtps の場合) あるいは 25 (それ以外)
tls
省略可能。 メールサーバ接続における TLS 接続の有無/方式の指定。 starttls、 smtps または none。 デフォルト値: none
verifycert
省略可能。 tls 設定が starttls あるいは smtps の場合における、 メールサーバの証明書の検証方式。 "strict" "loose" あるいは False。 "strict" あるいは "loose" の場合、HTTPS接続の際と同じ要領で、 証明書が検証されます。([hostfingerprints] および [web] cacerts も参照) "strict" の場合、 接続先メールサーバに関する設定が [hostfingerprints][web] cacerts のいずれにも無い場合も、 メール送信が中断されます。 hg email に --insecure が指定された場合、 この設定値は "loose" で上書きされます。デフォルト値: "strict"
username
省略可能。 メールサーバ接続の認証におけるユーザ名。 デフォルト値: none
password
省略可能。 メールサーバ接続の認証におけるパスワード。 無指定の場合、 対話的な実行であれば、 パスワード入力プロンプトが表示されますが、 非対話的な実行であれば、 処理が中断されます。 デフォルト値: none
local_hostname
省略可能。 MTA に対して、 送信元を指定するためのホスト名。

subpaths

連携先ホストの名称変更や一時的な停止などで、 サブリポジトリ参照先 URL が、 無効になる場合があります。 本セクションでは、 参照先 URL の書き換えを、 以下の形式で記述できます:

<パターン> = <置換結果>

パターン にはサブリポジトリの参照先 URL に合致する正規表現を、 置換結果 には参照先 URL の書き換え結果を記述します。 パターン でのグループ表記への合致は、置換結果 で参照可能です。 記述例を以下に示します:

http://server/(.*)-hg/ = http://hg.server/\1/

上記設定によって、 http://server/foo-hg/http://hg.server/foo/ に書き換えられます。

サブリポジトリの参照先 URL が相対パスの場合、 書き換えの パターン は、 参照先 URL を絶対パス化した後で、 絶対パス全体に適用されます。 書き換えの適用は、 記述順に実施されます。

trusted

Mercurial の設定ファイルは、 任意のコマンド実行を可能にできることから、 信頼できるユーザ/グループに属さない設定ファイルは、 その記述内容が無視されます。 共有リポジトリや、 リポジトリサーバの .hg/hgrc におけるフックやエクステンション設定では、 しばしばこの問題が顕在化します。 但し、 web インタフェースに関しては、 [web] セクションにおける、 安全な設定記述が使用されます。

設定ファイルの所有者またはグループが、 本セクションで記述した、 ユーザまたはグループと合致する場合、 その設定ファイルは 信頼 されます。 実効ユーザ (※ 訳注: 対象リポジトリ上で実行される 「プロセス」 の実効ユーザ) は常に信頼対象になります。 全てのファイルを信頼する場合は、 ユーザ/グループ設定のいずれかで * を列挙してください。 本セクションの記述が有効になるためには、 既に信頼されているファイル において記述する必要が有ります。 例えば、 Mercurial プロセスを実行しているユーザやサービスの $HOME/.hgrc ファイルなどが該当します。

users
信頼できるユーザの一覧 (カンマ区切り)
groups
信頼できるグループの一覧 (カンマ区切り)

ui

ユーザインタフェースに関する設定。

archivemeta
hg archive コマンドまたは hgweb 経由のダウンロードで得られる アーカイブファイルへの、 メタデータ (リポジトリの初期リビジョンと、 アーカイブ対象リビジョンのハッシュ値) を保持する .hg_archival.txt ファイル格納の有無。 デフォルト値: True
askusername
コミットにおけるユーザ名問い合わせの有無。 True の場合、 $HGUSER$EMAIL も設定されていなければ、 ユーザ名の問い合わせを行います。 ユーザ名が入力されない場合、 ユーザ名@ホスト名 が使用されます。 デフォルト値: False
commitsubrepos
親リポジトリのコミットにおける、 サブリポジトリ変更のコミットの要否。 False の場合に、 変更が未コミットなサブリポジトリがあれば、 コミット処理は中断されます。 デフォルト値: False
debug
デバッグ情報表示要否の真偽値。 デフォルト値: False
editor
コミットログ入力用エディタ。 無指定の場合、 $EDITOR または vi が使用されます。
fallbackencoding
UTF-8 によるコミットログの変換が失敗した場合に使用する符号化形式。 デフォルト値: ISO-8859-1
ignore
ユーザ毎の無視対象パターンファイルの読み込み設定。 対象ファイルの形式は、 リポジトリ毎の .hgignore ファイルと同じです。 本指定には、 フック指定の文法が適用可能です。 複数の無視指定ファイルの読み込みは、 ignore.other = ~/.hgignore2 のように記述します。 無視指定ファイル記述の詳細は、 hgignore(5) マニュアルを参照してください。 (※ 訳注: hg help ignore でも参照可能)
interactive
ユーザへの問い合わせ可否の真偽値。 デフォルト値: True
logtemplate
リビジョン表示系コマンドが使用するテンプレート文字列。
merge
手動マージの際に衝突解消を行うプログラム。 マージツールに関する詳細は hg help merge-tools を、 マージツールの設定に関する詳細は [merge-tools] セクションの説明を参照してください。
mergemarkers
マージで衝突が検出された際に、 ファイルに挿入される衝突マークの、 情報ラベル部分の形式。 detailed 形式では mergemarkertemplate によるテンプレート定義が使用されます。 basic 形式では local および other だけの単純なラベルになります。上記のいずれかのみ、 指定可能です。デフォルト値: basic
mergemarkertemplate
マージで衝突が検出された際に、 ファイルに挿入される衝突マークの、 テンプレート機能による定義。 テンプレート機能そのものに関する詳細は hg help templates を参照してください。 デフォルト設定では、 ハッシュ値、タグ名、ブランチ名、ブックマーク、ユーザ名および、 コミットログの一行目を表示します。 タグ名、ブランチ名、ブックマーク、 ユーザ名、 コミットログのいずれかで非 ASCII 文字を使用している場合は、 マージ対象ファイルの文字コードに、 注意を払う必要があります。 テンプレート展開の際に、 非 ASCII 文字は --encoding オプション、 HGENCODING あるいは各種ロケール環境変数で指定された文字コードで、 符号化されます。 マージ対象ファイルの文字コードと異なる場合、 文字コード混在による深刻な問題を生じます。
portablefilenames
ファイル名可搬性確認の要否。 warnignore または abort のいずれか。 デフォルト値は warn。 POSIX 環境における warn (または true) 設定では、 可搬性の無い名前 (例: AUX のような予約語や、 : のような特殊文字を含んだり、 文字大小の問題で、 既存ファイルと衝突するような、 Windows 環境で利用できないファイル名) を持つファイルが、 構成管理対象として追加された際に、 警告を発します。 ignore (または false) 設定では、 警告が発せられません。 abort 設定では、 コマンドの実行が中断されます。 Windows 環境では、 本設定は無視され、 コマンド実行は常に中断されます。
quiet
コマンド実行時のメッセージ表示抑止要否の真偽値。 デフォルト値: False
remotecmd
clone/push/pull 処理における遠隔実行コマンド。 デフォルト値: hg
reportoldssl
Python 2.5 以前の使用により、 SSL 証明書の処理ができない場合の、 警告表示を指定する真偽値。 デフォルト値: True
report_untrusted
信頼できるユーザ/グループ下に無い .hg/hgrc の無視に対する、 警告要否の真偽値。 デフォルト値: True
slash
パス区切りでのスラッシュ (/) 使用の要否。 パス区切りがスラッシュではない環境 (例: バックスラッシュ (\) を使用する Windows 環境) でのみ意味を持ちます。 デフォルト値: False
ssh
SSH 接続に使用するコマンド。 デフォルト値: ssh
strict
コマンド名指定の厳密性要否 (= 省略指定の禁止) の真偽値。 デフォルト値: False
style
コマンド出力に使用するスタイル名指定。
timeout
ロック解放待ちにおけるタイムアウト時間指定 (単位: 秒)。 負値はタイムアウト無しを意味します。 デフォルト値: 600
traceback
Mercurial は未知の例外のみ、 トレースバックを表示します。 本設定が True の際は、 Mercurial の既知の例外 (IOError や MemoryError) であっても、トレースバックを表示します。 デフォルト値: False
username
hg commit での新規リビジョン作成で記録されるユーザ名。 個人名と電子メールアドレスを使用するのが一般的です。 (例: Fred Widget <fred@example.com>) 無指定の場合、 $EMAIL 指定値、 または ユーザ名@ホスト名 が使用されます。 設定ファイルで username に空値が指定された場合、 (Mercurial の問い合わせを契機に) 手動で指定するか、 他の設定ファイル (例: システム毎設定ファイルで username = が記述された場合は $HOME/.hgrc) での設定が必要です。 username 指定値では、 環境変数の置換が実施されます。
verbose
出力情報量増加要否の真偽値。 デフォルト値: False

web

ウェブインタフェース設定。 本セクションでの設定は、 組み込みウェブサーバ (hg serve での実行) と、 ウェブサーバ上でのスクリプト (FastCGI や WSGI 向けの hgweb.cgi およびその派生) の実行の、両方に適用されます。

Mercurial の組み込みウェブサーバは、 認証 (authentication) を行いません (ユーザを確認するための、 ユーザ名やパスワードの入力を求めません) が、 承認 (authorization: アクセス可否の判定) の機能はあります (本セクションでの設定を元に、 認証済みユーザに対して実施)。 利用するウェブサーバの、 認証機能を Mercurial 向けに正しく設定するか、 Mercurial の承認機能を、 無効化してください。

信頼できる環境 (例: 私的な LAN 配下で、 全ての利用者に hg push 許可) において、 素早くサーバを立ち上げたい場合、 以下の起動形式が良いでしょう:

$ hg --config web.allow_push=* --config web.push_ssl=False serve

この設定は、 全ての利用者に、 サーバへの hg push を許可しますので、 公開サーバで使用してはいけません。

本セクションで指定可能な設定項目を、 以下に示します:

accesslog
アクセスログの書き出し先。 無指定時は標準出力に出力。
address
サーバの待ちうけアドレス。 無指定時はホストの持つ全アドレス。
allow_archive
利用可能なダウンロード向けのアーカイブ形式 (bz2, gz, zip) 一覧。 デフォルト値: 空(ダウンロード不可)
allowbz2
(非推奨) .tar.bz2 形式でのアーカイブダウンロードの可否。 デフォルト値: False
allowgz
(非推奨) .tar.gz 形式でのアーカイブダウンロードの可否。 デフォルト値: False
allowpull
hg pull 要求への応答の可否。 デフォルト値: True
allow_push
hg push 要求への応答の可否。 空または未設定の場合、 hg push 要求は受理されません。 * が設定された場合、 未認証ユーザを含む、 全てのユーザが hg push できます。 他の値が設定された場合、 認証されたユーザのうち、 本項目で名前が列挙されたユーザのみが、 hg push できます。 本設定の確認実施は、 deny_push 確認の後です。
allow_read
アクセス元ユーザが deny_read による制限を受けていない場合の、 当該ユーザのアクセス可否の制御。 本設定が空の場合、 未認証ユーザや、 本設定で名前が列挙されていないユーザは、 アクセスが拒否されます。 本設定が空、 または未設定の場合、 全てのユーザがアクセス可能です。 allow_read* に設定するのは、 未設定 (= 全ユーザへの許可) と等価です。 本設定の確認実施は、 deny_read 確認の後です。
allowzip
(非推奨) .zip 形式でのアーカイブダウンロードの可否。 本機能を有効にした場合、 一時ファイルが作成されます。 デフォルト値: False
archivesubrepos
アーカイブ作成における、 サブリポジトリへの再帰実施の有無。 デフォルト値: False
baseurl
外部への URL 公開で使用するベース URL。 電子メール通知フック等の、 サードパーティツールにける、 公開用 URL の構築を可能にします。 設定例: http://hgserver/repos/
cacerts

PEM 符号化形式の証明書認証局証明書一覧格納ファイルへのパス。 ファイル名記述における環境変数および ~user 記述は置換されます。 本項目が、 クライアント側で記述された場合、 指定された証明書により、 HTTPS サーバが認証されます。

本機能は Python 2.6 以降で利用可能です。 それ以前の Python において、 本機能を利用する場合は、 http://pypi.python.org から入手できる SSL ライブラリの後方移植版をインストールしてください。

SSL の証明書検証を、 一時的に停止したい場合は、 コマンドライン上で --insecure を指定してください。

OpenSSL の CA 証明書ファイルがあれば、 それを利用しても構いません。 多くの Linux システムでは、 /etc/ssl/certs/ca-certificates.crt に格納されている筈です。 それ以外は、 手動で生成する必要があります。 ファイルの形式を以下に示します:

-----BEGIN CERTIFICATE-----
... (base64 PEM 符号化形式の証明書) ...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... (base64 PEM 符号化形式の証明書) ...
-----END CERTIFICATE-----
cache
hgweb におけるキャッシュ利用の可否。 デフォルト値: True
collapse
descend が有効な場合、 サブディレクトリ配下のリポジトリ群も、 単一の一覧ページに表示されます。 同時に collapse も有効な場合、 サブディレクトリ配下のリポジトリ群は、 対応パスへの誘導を行う、 専用ディレクトリ配下に、グループ化されます。 この設定によって、 サブディレクトリ配下のリポジトリ表示は、 単一の要素にまとめられます。 デフォルト値: Flase。
comparisoncontext
ファイルの差分比較を表示する際の、 コンテキスト行数。 負値または full 指定の場合、 ファイル全体が表示されます。 デフォルト値は 5。 comparison 要求時に context パラメータを指定することで、 設定を上書き可能です。
contact
リポジトリ管理者の名前または電子メールアドレス。 無指定の場合、 ui.username 設定値、 $EMAIL 設定値が、 それらも未設定/空値の場合は "unknown" が使用されます。
deny_push
hg push 要求拒否の要否。 空または未設定の場合、 hg push は、 拒否されません。 * の場合、 hg push は全て拒否されます。 それ以外では、 未認証ユーザと、 本設定で名前が列挙されたユーザは、 hg push が拒否されます。 本設定の確認実施は、 allow_push 確認の前です。
deny_read
リポジトリへのアクセス拒否の要否。 空値以外が設定された場合、 未認証ユーザと、 本設定で名前が列挙されたユーザは、 リポジトリへのアクセスが全て拒否されます。 * が設定された場合、 全てのアクセスが拒否されます (この設定が必要なケースは無いでしょう)。 空または未設定の場合、 アクセス可否は allow_read 設定次第です。 (説明を参照してください) deny_readallow_read が、 両方とも空または未設定の場合、 全てのユーザがアクセス可能となります。 ウェブインタフェースの、 ディレクトリ毎インデックページ経由で、 リポジトリ一覧が公開される場合、 アクセス拒否対処ユーザに対しては、 一覧から当該リポジトリが除外されます。 deny_read での設定は、 allow_read での設定に優先します。
descend
ウェブインタフェースが表示する、 ディレクトリ毎のインデックページで、 リポジトリ一覧を表示する際に、 当該仮想パス配下のリポジトリを、 全て表示するか否かの制御。 (※ 訳注: デフォルト値は True)。 偽値の場合、 当該仮想パス直下のリポジトリのみが列挙されます。 (表示されなくなるリポジトリも、 親仮想パスでのインデックページでは、 列挙されます) (※ 訳注: 本項目の翻訳は、 わかりやすさを重視して、 原文から大幅に改変してあります。 適宜原文のヘルプも参照してください)
description
リポジトリ内容/用途に関する説明テキスト。 デフォルト値: "unknown"
encoding
文字符号化形式。 無指定の場合、 サーバ実行時のロケール設定を元に、 符号化形式が決定されます。 設定例: "UTF-8"
errorlog
エラーログの書き出し先。 無指定時は標準エラー出力に出力。
guessmime
ファイル内容の直接ダウンロードにおける、 MIME 種別の制御。 True 設定の場合、 ファイルの拡張子を元に MIME 種別を推測します。 例えば、 HTML ファイルでは text/html が使用されますが、 信用できないリポジトリを公開した場合、 cross site scripting 攻撃の原因となる可能性があります。 デフォルト値: False
hidden
ウェブインタフェースの、 ディレクトリ毎インデックスページにおける、 リポジトリ一覧隠蔽の要否。 デフォルト値: False
ipv6
IPv6 利用の要否。 デフォルト値: False
logoimg
幾つかの表示テンプレートにおいて、 各ページで表示されるロゴの、 画像ファイル名。 staticurl に対する相対パスで指定します。 ロゴ画像ファイルのフルパスは、 "staticurl/logoimg" となります。 デフォルト値: hglogo.png
logourl
ロゴ表示に使用するベース URL。 無指定時は http://mercurial.selenic.com/
maxchanges
changelog 画面における最大表示リビジョン数。 デフォルト値: 10
maxfiles
リビジョンあたりの最大一覧表示ファイル数。 デフォルト値: 10
maxshortchanges
shortlog, graph, filelog 画面における最大表示リビジョン数。 デフォルト値: 60
name
ウェブインタフェースで使用するリポジトリ名。 無指定の場合、 当該作業領域のディレクトリ。
port
待ち受けポート番号。 デフォルト値: 8000
prefix
サービス提供時の前置パス。 デフォルト値: '' (サーバールート)
push_ssl
hg push における SSL 接続要求 (パスワード盗聴防止 ) の要否。 デフォルト値: True
staticurl
静的ファイル利用のベース URL。 未設定の場合、 静的ファイル (例: アイコン画像 hgicon.png) は CGI スクリプト自身が提供します。 本項目を設定することで、 静的ファイルは HTTP サーバが直接扱います。 設定例: http://hgserver/static/
stripes
複数行出力における "シマウマ模様" の行数。 デフォルト値: 1 (0 指定で機能無効化)
style
使用するテンプレートスタイル。
templates
HTML テンプレートの検索先。 無指定時はインストール先。

websub

ウェブ表示の置換設定定義。 ウェブインタフェースの出力の自動変換用に、 正規表現の置換パターン設定を、 本セクションで定義することが可能です。

デフォルトの hgweb 表示用テンプレートは、 コミットログ表示に対して、 これらの置換パターンを適用します。 独自定義の hgweb テンプレートにおいて、 "websub" フィルタ呼び出しを追加 (通常は "escape" フィルタの直後) することで、 コミットログ以外の任意の対象に、 置換パターンを適用可能です。

置換パターン利用の例としては、 障害番号を HTML のリンクに変換することで、 障害管理システムにリンクしたり、 『マークダウン』的な文法の記述から、 HTML への変換、といったものがあります (後述する例を参照してください)

本セクションの各エントリの名前は、 置換フィルタの名前にります。 各エントリの値は、 フィルタによる置換処理の正規表現定義となります。 本セクションでの記述は、 廃止された interhg エクステンション同様に、 Unix の sed コマンドによる、 置換指定の文法を踏襲しています:

patternname = s/合致判定正規表現/置換正規表現/[i]

区切り記号には "/" 以外にも、 任意の文字を使用可能です。 末尾において "i" が指定された場合、 合致判定の際に文字の大小を無視します。

記述例:

[websub]
issues = s|issue(\d+)|<a href="http://bts.example.org/issue\1">issue\1</a>|i
italic = s/\b_(\S+)_\b/<i>\1<\/i>/
bold = s/\*\b(\S+)\b\*/<b>\1<\/b>/

worker

並列実施に関する設定。 現状では、 Unix 系システムにおける作業領域更新で、 処理の並列実施により、 大規模リポジトリでの大幅な性能改善が見込まれます。

numcpus
並列実施に使用可能な CPU 数。 デフォルト値は 4 あるいは システム上の CPU 数の大きい方の値。 0 あるいは負値は、 『デフォルト値の使用』を意味します。

著者

本マニュアルページの著者は Bryan O'Sullivan <bos@serpentine.com> です。

Mercurial の著者は Matt Mackall <mpm@selenic.com> です。

他の参照先

hg(1), hgignore(5)

Copying

本マニュアルの著作権は copyright 2005 Bryan O'Sullivan です。 Mercurial の著作権は copyright 2005-2014 Matt Mackall です。 本ソフトウェアは、 バージョン2またはそれ以降の GNU General Public License の元での自由な利用が保証されています。