「入門TortoiseHg+Mercurial」発売中(詳細は「執筆情報」参照)


設定ファイル記述

注意: 他環境での Mercurial インストール経験があっても、 別環境で Mercurial をインストールする際には、 以下の節を一通り確認することを強くお勧めします。

初期導入時に必要と思われる設定ファイル記述に関してまとめてみました。

設定ファイルの詳細に関しては、 "hg help config" 出力、 あるいはそのウェブ版を参照してください。

文字コード言語に関する設定を行うことで、 "hg help config" 出力も日本語化されます。 ウェブ版も日本語訳があります。

設定ファイルの有効範囲

Mercurial では、 通用範囲の異なる複数の設定ファイルが読み込まれます。 通用範囲には以下の4種類があります:

各ファイルの場所/読み込み順序等に関する詳細は、 "hg help config" を参照してください。

新たに作成した設定ファイルが、 期待通りに読み込まれているかを確認するには、 "hg showconfig" コマンドを使用します。

特に、マージプログラムに関する設定が不適切な場合、 復旧が難しいケースも多々ありますので、 実際にマージ作業を実施するのは、 "hg showconfig" による設定確認後にした方が無難です。

なお、 "hg showconfig" を "--debug" 付きで実行することで、 各設定項目毎に、 どのファイルに由来する値なのかを知ることができますので、 設定が想定と異なる場合は、 他の設定ファイルによる上書き等が無いかを確認してみてください。

[ui] username

"ui" セクションの "username" 指定は、 ローカルリポジトリへのコミットの際に利用されます。 "username" の指定が無い場合、 コミットを実施した際のアカウント/ホスト名が使用されてしまうので、 特にノートPCで移動中にコミットするような人は、 明示的に指定したほうが良いでしょう。

備考: ネットワーク接続が切断されている場合、 Windows などはホスト名として "localhost" を返します。

例えば、以下のように記述します。

[ui]
username = FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
username 指定

[ui] merge

マージプログラム』 ページを参照しつつ設定が出来たなら、 実際にマージ作業を行って、 マージプログラムが正しく機能していることを確認してください (Mercurial サイトにあるチュートリアルが一番手軽でしょう)。

特に、merge コマンドや diff3 コマンドのような、 非対話的 3-way diff マージを使用している場合、 設定上の問題で表示されるエラーと、 (非対話形式ゆえに) チェンジセット間での衝突を自動解消できないために表示されるエラーは、 注意していないと区別できないですから、 必ず確認をしましょう。

[paths]

リモートリポジトリとの連携の際に連携先リポジトリを特に指定しなければ、 設定ファイルの "paths" セクションにおいて "default"("hg push" は、 先に "default-push" を参照) で指定されたリポジトリと連携を行います。

他のリポジトリから "hg clone" による完全コピーを行った際には、 .hg/hgrc ファイルには "default" 指定のみが記述された状態になっています。

[paths]
default = clone元
default-push 指定の追加

注意: 以前の設定例において書かれていた "default-push = %(default)s" という、 Python の「パラメータ置換」形式に準じた設定記述は、 Mercurial 1.3 以降からは使用できなくなりました。

設定ファイル記述の文法に関する詳細は、 "hg help config" 中の "syntax" (日本語訳では"文法")セクションも参照してください。

例えばノートPCを持ち歩くような状況では、 物理的には同一のリポジトリとの連携であっても、 状況に応じて接続先指定(e.g.: ホスト名/ポート番号) を変える必要が有ったりもしますが、 そのような場合には、 複数の連携先指定を [paths] セクションに記述し、 hg コマンド起動の際に明示的に連携先を指定しましょう。

[paths]
inner  = ssh://inner-hostname.your.domain/repository/path
outer = ssh://outer-hostname.your.domain/repository/path
接続先候補の列挙

上記のような設定記述が有る場合:

といったように、接続先の選択が簡単にできます。

備考: Emacs 経由で push/pull/incoming/outgoing を実行する場合、 C-u 付きで実行することで、 接続先リポジトリを対話的に選択することができます (例えば hg-pull の起動なら "C-u C-c h <")。

うっかり連携先リポジトリを指定せずに実行した際に、 予期せぬ連携先と接続してしまうことを防ぐために、 "default" や "default-push" を設定ファイルから除外しておけば、なお良いのではないでしょうか。

[encode], [decode]

注意: 現在は、 以下に述べる Win32text エクステンションではなく、 Mercurial 1.5.4 で導入された EOL エクステンションの利用が推奨されています。

EOL エクステンションの設定に関しては、 いずれ本ページを改訂しますが、 当面は私が書いたブログエントリ等を参照してください。

備考: "encode" および "decode" セクションは、 本来幅広い用途に利用されるものですが、 ここでは改行コードの取り扱いに絞って説明します。

以下のような場合:

Windows 環境下で Mercurial を使用するユーザ (= CR + LF 形式を採用したいユーザ)は、 "encode" および "decode" セクションに、 以下のような記述を行う必要があります (どの設定ファイルに記述するかは、 設定の通用範囲に応じて適宜決定してください)。

[extensions]
hgext.win32text=

[encode]
** = cleverencode:

[decode]
** = cleverdecode:
改行コード変換指定

なお、改行コード変換の設定を行う際には、 "extensions" セクションにおいて "hgext.win32text=" が記述されていることを確認してください。

注意: Mercurial 0.9.1 以後からは、 Windows ネイティブ版でのインストールにおいても、 デフォルトでは改行コードの自動変換設定が(意図的に) 外される様になりましたので、 Windows 形式の改行コードを期待する場合は設定が必要になりますから、 注意してください。


次節「言語設定」へ