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


インストール

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

Mercurial のインストールに関してまとめてみました。

以下のテーブルから、 各自の事情に適したインストール方法を選択し、 「インストール方法」欄のリンクをクリックしてください。

OS 実行ファイル形式 インストール方法 備考
Linux/Unix Python スクリプト パッケージ管理経由 rpm/yum 等
ソースからビルド
Windows バイナリ(*.exe) *1 インストーラ経由
ソースからビルド
Python スクリプト *2 Cygwin の setup.exe 経由 "mercurial.el" は同梱無し
ソースからビルド

*1: TortoiseHg 同梱版の利用も、この分類と同等。 Python スクリプト版との併用は避けることをお勧めします。

*2: 他の Windows プロセスから利用する場合は対処が必要です。

Linux/Unix でパッケージ管理経由

以下の配布ページから辿って、 各自の環境のパッケージ管理に即したものをダウンロードした上で、 インストールしてください。

http://www.selenic.com/mercurial/wiki/index.cgi/BinaryPackages

「Python で実装」と謳ってはいますが、 Mercurial には一部 C 実装が含まれていますので、 他環境のものなどを無理矢理インストールするのは、 避けたほうが無難です。

なお、 ネットワーク経由でのインストールができる yum や apt-get のようなパッケージ管理を使用しているのであれば:

% yum install mercurial
ネットワーク経由でのインストール

といったように、 簡単にインストールできます。

Windows で Cygwin の setup.exe 経由

最近は、Cygwin の setup.exe 経由によるインストールメニューにも、 Mercurial が掲載されるようになりました。

Cygwin の setup.exe によるインストール

画面イメージは、"Full" によるアルファベット順一覧表示のものですが、 Category 別表示の "Devel" ないし "Python" 分類でも選択肢が表示されます。

Mercurial を選択した上でインストール作業を継続してください。

Windows バイナリ版をインストーラ経由

以下の配布ページから辿って、 Windows バイナリ版のインストーラを入手/実行してください。

http://www.selenic.com/mercurial/wiki/index.cgi/BinaryPackages

設定処理を抑止しない限りは、 環境変数 Path への追加設定はインストーラが行います。

後は「コマンドプロンプト」なり「Cygwin コンソール」から、 "hg version" などと起動して、 バージョン情報が表示されれば起動確認は OK です。

Windows バイナリ版をソースからビルド

申し訳ありませんが、 私は(面倒なので)やったことがありません。

興味(勇気?)のある方は、 本家の 「Windows Install」や 「How to build Mercurial on Windows」 といった解説を元に頑張ってみてください。

Python スクリプトをソースからビルド

Python スクリプトをソースからビルドする場合は:

http://www.selenic.com/mercurial/release/

上記のページからソースを入手して、 ビルド手順に従って作業をすれば、 さほど難しいことは無いと思いますが、 事前確認や注意が必要な幾つかの点について書いておきます。

ビルドに必要なもの

Mercurial をソースからビルドするには、 以下のものが必要になります。 『オプショナル』となっているものは、 無くてもビルド可能です。

Python 開発パッケージ

Linux のパッケージ名で言うところの python-devel です。

処理系を含む python パッケージだけではビルドできません。

C コンパイラ

C 実装部分のコンパイルに必要です。

make コマンド

ソース配布に含まれる Makefile は、 "export PREFIX" などという表記が含まれるため、 GNU Make が必要です: 旧来の make コマンドでは解釈できない場合あり (Solaris 用の開発環境である SunStudio 添付の make など)。

但し、上記の "export PREFIX" 行さえコメントアウトしてしまえば、 特に問題なくビルドできますので、 面倒な人は直接 Makefile を修正してしまったほうが良いでしょう (Makefile そのものは非常に簡素ですので、 いっそ直接コマンド起動しても良いぐらいです)。

GNU gettext(Mercurial 1.2 版以後)/オプショナル

国際化対応のためのメッセージファイルの処理に使用されます。

Cygwin の場合、 ビルドの際に使用される msgfmt コマンドは gettext-devel パッケージに含まれているので注意が必要です。

Linux であれば gettext パッケージを導入してください (版によってはこちらも分離されている可能性がありますが…)。

ビルド時に gettext が無い場合、 ビルドされた Mercurial を使用する際には、 メッセージが日本語化されません。

docutils/オプショナル

ドキュメントの生成に使用します。

docutils が無い場合、 UNIX man ページ/HTML 形式ドキュメント等が生成されませんが、 オンラインヘルプ ("hg help" 出力) で十分であれば、 特に必要無いケースも多々あることと思います。

docutils の無い環境でビルドする場合、 make コマンドのターゲット名を以下のように読み替えてください。

ちなみに、1.4 よりも前の版では、ドキュメント生成に ASCIIDOC が必要でした。

上記「ビルド手順」のページには、 「マージプログラムも用意せよ」とありますが、 とりあえず Mercurial 本体をインストールする分には、 マージプログラムは必要ありません。

インストール先の変更

ソース配布に含まれる Makefile を使用する場合:

% make PREFIX=/path/to/install
インストール先の変更

といった方法で、インストール先を変更することができます (デフォルトは "/usr/local" 配下): "install-home" 系の make ターゲットは、 概ね "PREFIX=${HOME}" と等価です。

この場合、ルート権限等は不要ですが、 PYTHONPATH 環境変数の設定が必要になります。 ここ暫くの版の Mercurial では、 起動された hg コマンドの格納先ディレクトリからの相対パスを使って、 自動的に PYTHONPATH 設定相当を実施する処理が入っているため、 PYTHONPATH 環境変数の設定は不要です

なお、 Python のインストール先パスには、 インストール時に使用した Python 処理系の版数(e.g.: "2.4") が埋め込まれているため、 パッケージ管理によって Python 処理系そのものがバージョンアップされた場合、 以下のような出力と共に突然動かなくなることがありますので注意してください。

Traceback (most recent call last):
  File "/usr/bin/hg.py", line 11, in ?
    from mercurial import demandimport; demandimport.enable()
ImportError: No module named mercurial
Python 処理系のアップデートによる起動失敗

まずは、インストール時点と現在とで、 有効な Python 処理系の版数が異なっていないか確認しましょう。 版数が違っていた場合は、 Mercurial を再度インストールしなおせば問題は解消する筈です。

zlib の確認

Mercurial は、 構成管理情報の圧縮等に zlib を使用していますが、 Python をソースからビルドしているような環境では、 zlib モジュールに関して:

といった振る舞いをするため、注意が必要です。

以下の手順で zlib 利用の可否を確認しておいた方が良いでしょう。

% python -i
>>> import zlib    ← zlib 読み込み指定
>>>                ← エラーが出なければ成功
zlib 利用可否の確認

当該環境の Python が zlib を利用できないものだった場合、 zlib のインストールとあわせて、 Python そのものの再ビルドが必要です。

バイナリ版と Python スクリプト版の共存

Windows 環境において、 バイナリ版で運用していたローカルリポジトリを、 Python スクリプト版でアクセスすると(逆も同様)、 変更を加えていないファイルに対しても hg status コマンドが 「変更されている」(= 各ファイルに対して "M" が表示される) とみなす場合があります。

hg status によって多数のファイルが 「変更されている」と表示される一方で、 hg diff では差分が出力されない場合、 この現象に相当すると思ってよいでしょう。

hg diffencode/decode 設定 に基づいて「ファイルの内容」ベースで処理しているのに対して、 hg status は リポジトリの .hg/dirstate に保持されているファイルサイズ・更新タイムスタンプ情報等を元に判定しています。 そのため、実際にファイルが更新されていなくても、 ワーキングディレクトリ中のファイルのサイズ/日付が、 .hg/dirstate の内容と異なっている場合には、 変更されたものとみなしているようです。

バイナリ版と Python スクリプト版では、 .hg/dirstate で保持する値の算出形式が違うのか、 プラットフォーム(Windows API ⇔ Cygwin API) から得られる値が違うのか、 とにかく「変更されている」と認識されてしまうようです。

以上の事から、 Windows 環境において、 バイナリ版と Cygwin Python スクリプト版の Mercurial を併用するのは、 避けたほうが良いでしょう。

スクリプト起動用補助プログラムの導入

Windows 環境において、 (Cygwin の)Python スクリプトとして Mercurial を導入した場合、 他の Windows プロセスと連携する上で:

といった問題が発生します。

例えば、 Meadow のような Emacs 実装から、 mercurial.el を経由して Mercurial を利用しようとした場合、 この問題は深刻です。

このような場合は、 (1) スクリプト起動の補助と、 (2) Windows 形式から POSIX 形式へのパス変換を行う仲介役となる Cygwinwrap (0.6 版を 2008/03/28 にリリース) を使用します。

Cygwinwrap の詳細は、 アーカイブに同梱される README ファイルを参照してもらうとして、 簡単な適用方法を以下に示します。

% make pythonwrap.exe
% mv ${HG_BIN}/hg ${HG_BIN}/hg.py
% cp ./pythonwrap.exe ${HG_BIN}/hg.exe
Cygwinwrap の利用

上記における "${HG_BIN}" は、 Python スクリプトである hg コマンドのインストール先ディレクトリを表します (通常は "/usr/bin")。

後は、Windows プロセスから "${HG_BIN}" 配下の .exe ファイルを実行できるように、 Path 環境変数を設定すれば完了です。


次節「文字コード」へ