Mercurialとは?

Mercurialは分散型のバージョン管理システムの1つだ。分散バージョン管理システムとしてはLinuxカーネルの開発にも使用されているGitが有名だが、Google CodeBitBucketといったプロジェクトホスティングサービスではMercurialが採用されている。また、GUIフロントエンドなどの周辺ツールが充実している点もMercurialの大きな魅力だ。

今回はMercurialを使用するためのGUIフロントエンドとして、TortoiseHG、MercurialEclipse、NetBeansの3つを紹介する。

TortoiseHG

Windows環境ではCVSやSubversion、Gitなどを使用するためのGUIフロントエンドとしてTortoiseCVS、TortoiseSVN、TortoiseGitなどが存在する。これらのフロントエンドはWindowsのエクスプローラの右クリックメニューからコミットやアップデートといった操作を行うことができ、ファイルやディレクトリの状態をオーバーレイアイコンで表示することができる。

TortoiseHGはこれらのGUIフロントエンドのMercurial版だ。右クリックメニューからMercurialの使用に必要な操作を行うことができるため、直感的な操作が可能だ。

図1 TortoiseHG

図2 リポジトリエクスプローラ

Windows環境で特にIDEなどを使用せずにMercurialを使用する場合には便利なクライアントだ。なお、TortoiseHGはWindows専用というわけではなく、Linux版も提供されているほか、MacOS Xへのポーティングも行われている。

MercurialEclipse

MercurialEclipseはEclipse上でMercurialを使用するためのプラグインだ。こちらの更新サイトからインストールできる。

プラグインの動作に必要となるMercurialのバイナリもこの更新サイトからプラグインとしてインストール可能だ。また、Helios(Eclipse 3.6)の場合はマーケットプレイスからインストールすることもできる。

見た目や使い勝手はEclipse上でCVSやSubversionを使う場合と大差ない。ディレクトリやファイルに状態を示すアイコンがオーバーレイ表示され、右クリック-[Team]からMercurialに関する操作を行うことができる。

図3 MercurialEclipse

また、Team Synchronizingパースペクティブではローカルリポジトリに未コミットのファイル、Incoming(プル可能なファイル)、Outgoing(プッシュ可能なファイル)をわかりやすく表示することができ、この画面上でコミットやプル、プッシュといった作業を行うことができる。

図4 Team Synchronizingパースペクティブ

なおだし、筆者の試したところではMercurialEclipseはリポジトリにプロキシ経由でアクセスする必要のある環境ではうまく動作しないことがあったので注意してほしい。

NetBeans

NetBeansは標準でMercurialをサポートしているのが大きな強みだ(Mercurialは標準でMercurial以外にCVSとSubversionをサポートしている)。機能面は比較的シンプルで、[チーム]メニューや右クリックメニューなどからMercurialに関する操作を行うことができる。

図5 NetBeansのMercurialサポート

図6 履歴を表示したところ

MercurialEclipseと比較すると動作は安定しているものの、TortoiseHGやMercurialEclipseと比べるとユーザインタフェースの面が弱く、Mercurialに慣れていないと若干わかりにくい部分があるかもしれない。たとえばEclipseではリポジトリとの差分をグラフィカルに比較するためにTeam Synchronizingパースペクティブが用意されているが、NetBeansにはそのようなビューは存在しない。

ただ、NetBeansの場合、Mercurialと同様標準でサポートされているCVSやSubversionに関しても同じようなインタフェースとなっているため、NetBeansのポリシーといえるのかもしれない。

まとめ

Mercurialは日本語ファイル名の取り扱いにやや難があるものの、比較的素直で使いやすい分散型のバージョン管理システムだ。また、本稿で紹介したように充分に実用可能なレベルのフロントエンドが存在し、GUIベースで手軽に利用することができる。これらのツールを利用することでより効率的にMercurialを活用することができるだろう。