| MAP | TOP > 工房「藤車」 > SCM メモ > Mercurial の利用 > 設定ファイル記述 | << | >> |
注意: 他環境での Mercurial インストール経験があっても、 別環境で Mercurial をインストールする際には、 以下の節を一通り確認することを強くお勧めします。
初期導入時に必要と思われる設定ファイル記述に関してまとめてみました。
設定ファイルの詳細に関しては、
バイナリ版ならインストール先の "Docs/hgrc.5.txt" を、
ソース版なら "doc" ディレクトリでの
make install によりインストールされたものを参照してください。
Mercurial では、 置き場所ごとに通用範囲の異なる複数の設定ファイルが参照されます。 通用範囲には 「インストール毎」「システム(=ホスト)毎」「ユーザ毎」「リポジトリ毎」 の4種類があります (詳細は hgrc の man における "FILES" 節を参照してください)。
注意:
以前の Windows バイナリ版では、
HOME 環境変数の定義状況により、
"C:\Documents and Settings\USERNAME\Mercurial.ini"
と "%HOME%\Mercurial.ini"
が排他的に参照されていました。
しかし、1.0 版からは:
%HOME%\.hgrc
%HOME%\Mercurial.ini
C:\Documents and Settings\USERNAME\Mercurial.ini
上記全ての設定が読み込まれますので注意が必要です。
新たに作成した設定ファイルが、
期待通りに読み込まれているかを確認するには、
hg showconfig コマンド
(0.9.1 版以前なら show debugconfig)を使用します。
設定ファイル記述による上書き状況が標準出力に書き出されますので、 記述内容が出力に反映されていない場合、 設定ファイルのファイル名/格納先を確認してみてください。
注意:
以前の Python スクリプト版は、
${HOME}/.hgrc のみを読み込んでいたのですが、
1.0 版からは
${HOME}/Mercurial.ini
も読み込まれるようになっていますので、
Windows バイナリ版と Cygwin Python スクリプト版を併用していた方は、
注意が必要です。
特に、マージプログラムに関する設定が不適切な場合、 実際にマージ作業をしてみるのはこの確認の後に行った方が無難です。
"ui" セクションの
"username" 指定は、
ローカルリポジトリへのコミットの際に利用されます。
"username" の指定が無い場合、
コミットを実施した際のアカウント/ホスト名が使用されてしまうので、
特にノートPCで移動中にコミットするような人は、
明示的に指定したほうが良いでしょう。
備考: ネットワーク接続が切断されている場合、 Windows などはホスト名として "localhost" を返します。
例えば、以下のように記述します。
[ui]
username = FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
username 指定前節を参照しつつ設定が出来たなら、 実際にマージ作業を行って、 マージプログラムが正しく機能していることを確認してください (Mercurial サイトにあるチュートリアルが一番手軽でしょう)。
特に、merge コマンドや diff3 コマンドのような、 非対話的 3-way diff マージを使用している場合、 設定上の問題で表示されるエラーと、 (非対話形式ゆえに) チェンジセット間での衝突を自動解消できないために表示されるエラーは、 注意していないと区別できないですから、 必ず確認をしましょう。
リモートリポジトリとの連携の際に連携先リポジトリを特に指定しなければ、
設定ファイルの "paths" セクションにおいて
"default"("hg push" のみ
"default-push")
で指定されたリポジトリと連携を行います。
他のリポジトリから
"hg clone" による完全コピーを行った際には、
.hg/hgrc ファイルには
"default" 指定のみが記述された状態になっていますので、
必要に応じて "default-push" 指定を追加してください。
以下の記述例では、
"default-push" に
"default" と同じ連携先を指定しています。
[paths]
default = clone元
default-push = %(default)s
default-push 指定の追加例えばノートPCを持ち歩くような状況では、
物理的には同一のリポジトリとの連携であっても、
状況に応じて接続先指定(e.g.: ホスト名/ポート番号)
を変える必要が有ったりもしますが、
そのような場合には、
複数の連携先指定を [paths] セクションに記述し、
hg コマンド起動の際に明示的に連携先を指定しましょう。
[paths] inner = ssh://inner-hostname.your.domain/repository/path outer = ssh://outer-hostname.your.domain/repository/path
上記のような設定記述が有る場合:
hg pull inner" ⇒
inner-hostname.your.domain
hg pull outer" ⇒
outer-hostname.your.domain
といったように、接続先の選択が簡単にできます。
備考:
Emacs 経由で push/pull/incoming/outgoing を実行する場合、
C-u 付きで実行することで、
接続先リポジトリを対話的に選択することができます
(例えば hg-pull の起動なら
"C-u C-c h <")。
うっかり連携先リポジトリを指定せずに実行した際に、
予期せぬ連携先と接続してしまうことを防ぐために、
"default" や "default-push"
を設定ファイルから除外しておけば、なお良いのではないでしょうか。
注意: 現在は、 以下に述べる 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 形式の改行コードを期待する場合は設定が必要になりますから、 注意してください。
| MAP | TOP > 工房「藤車」 > SCM メモ > Mercurial の利用 > 設定ファイル記述 | << | >> |