分散バージョン管理Git/Mercurial/Bazaar徹底比較ユカイ、ツーカイ、カイハツ環境!(3)(4/5 ページ)

» 2009年01月14日 00時00分 公開
[岡本隆史,@IT]

Pythonで機能が拡張できるMercurial

Mercurialの概要と特徴

 Mercurialはギリシャ神話に登場する神マーキュリーの形容詞系です。マーキュリーは、「商業」「盗賊」「雄弁」「学問」の神とされ、Mercurialという名前は、マーキュリーのように動作するという意味を込めて付けられています(注:盗賊については、Mercurialのサイトでは特に触れられていませんが、CVS/SVNからシェアを奪うという意味が含まれているのかもしれません)。また、Mercurialは「水銀」という意味も持ち、コマンド名は、水銀の元素記号「Hg」から「hg」となっています。

 オープンソースで開発されているJavaの実行環境であるOpenJDK、UNIX系OSのSolarisのオープンソース版であるOpenSolaris、オープンソースの統合開発環境のNetBeansなどサン・マイクロシテムズがかかわるプロダクトで積極的に利用されています。特に、NetBeansの開発で利用されていることもあり、NetBeansでは標準でMercurialがサポートされています。

 アーキテクチャ的には、次に紹介するBazaarと同じくPythonで記述されています。「Extension」と呼ばれる仕組みにより、拡張機能を後から簡単に追加できます。サーバによるリポジトリのほかの開発者への公開も、Mercurialに付属するコマンドだけで簡単に公開できます。

Mercurialをサポートするツール

Windowsのエクスプローラ用「TortoiseHG」

 TortoiseHGは、Windowsエクスプローラへバージョン管理機能を統合するTortoiseCVS、TortoiseSVNのMercurial版です。TortoiseCVS/SVNと同じく、Windowsシェル上から左クリックで表示されるMercurial用のメニューでMercurialの操作ができます。コミットや、ログ表示、差分表示、同期(プッシュ/プル)などの基本的な操作ができます。

 TortoiseSVN/CVSと同じくファイルにアイコンが追加され、編集されたファイルや新規に追加されたファイルや分かるようになっています。

図16 TortoiseHGの画面 図16 TortoiseHGの画面(画像をクリックすると拡大します)

Eclipseプラグイン「Mercurial Eclipse」

 Mercurial EclipseはEclipseへMercurialの機能を追加するプラグインです(図17図18)。

図17 MercurialEclipseのメニュー 図17 Mercurial Eclipseのメニュー
図18 Mercurial Eclipseの[History]ビュー 図18 Mercurial Eclipseの[History]ビュー

 メニューからMercurialのほとんどの操作をサポートしていますが、[History]ビューで見えるメッセージが文字化けしたり、ファイルの状態がほかのEclipseプラグインのようにアイコンで表示されないなど、ほかのEclipseプラグインに比べると、実用にはいま一歩といったところです。

 筆者が触った限りでは、2008年12月時点では日本における実際のシステム開発での利用はまだ早いと感じましたが、これらの課題が解決されれば、十分実用的なツールとなると考えられます。

hgコマンドのサーバ機能

 Mercurialはhgコマンドから簡単にリポジトリをWebサーバとして公開できます。リポジトリの公開画面からリポジトリで管理されているファイル(図19)だけでなく、リポジトリ内の情報を取得できます(図20)。

図19 Webに公開されたMercurialのリポジトリ 図19 Webに公開されたMercurialのリポジトリ
図20 Web上でのリビジョングラフの表示 図20 Web上でのリビジョングラフの表示

 SVNやGitでは、Webブラウザでチェンジセットや履歴情報にアクセスするためにはViewVCやTracなど、ほかのツールを借りる必要がありますが、MercurialはMercurial単独でリポジトリ情報をWebサーバ上で公開する機能を持っています。

完全な国際化対応と正確な操作が決め手のBazaar

Bazaarの概要と特徴

 Bazzarは、多数のバージョン管理システムの説明とレビューをしてきたMartin Pool氏によって開発されました。Pool氏は、LinuxディストリビューションUbuntuのスポンサーであるCanonicalに雇われて、“オープンソースハッカーが利用を好む分散型バージョン管理システムの構築”の仕事を割り当てられてBazzarを開発したようです。

 そのため、主にUbuntuの開発で利用されていますが、そのほかではMySQLがBazaarを採用しまています。GNU archから派生したツールが「Bazaar」「Bazaar-NG」と呼ばれていましたが、現在のBazaarはスクラッチから書き直されている別物なので、ご注意ください。コマンド名がbzrであることから、Bazaarは「bzr」と表記されることもしばしばあります。

 Bazaarはほかのツールに比べ最も後発であることと、使い勝手に定評のあるUbuntuの開発で利用されていることもあり、洗練された印象があります。特徴としてプラグインアーキテクチャを採用しており、EclipseやTracのようにプラグインをアドオンすることにより機能拡張ができます。例えば、BazaarでSVNのリポジトリを扱えるようにする機能は「svnプラグイン」として実装されています。同様にMercurialやCVSなどのプラグインを作成すれば、ほかのバージョン管理ツールと容易に連携できます。

 Windows版、Linux版ともにBazaarプロジェクトで開発され、WindowsエクスプローラにBazaarの機能を統合する「TortoiseBzr」はWindows版に標準で同梱されています。ほかのツールでは、コマンドラインの標準のセットとGUIツールは別プロジェクトで開発されていることが多く、クライアントに何を使えばいいか迷うものです。一方、BazaarプロジェクトではBazaarとそのクライアントを一緒に開発を行っているので、「ユーザーが何をどこから入手すればいいか迷わなくて済む」というメリットがあります。

 また、ファイル名の変更履歴に対応しているので、リファクタリングしてもファイルの変更の追跡が容易です。ただし、GitやMercurialに比べると、処理速度が遅いという問題が指摘されています(参考:「Distributed Version Control Systems: A Not-So-Quick Guide Through」)。

Bazaarをサポートするツール

Windowsのエクスプローラ用「TortoiseBzr」

 TortoiseBzrは、Windowsエクスプローラへバージョン管理機能を統合するTortoiseCVS、TortoiseSVNのBazaar版です。TortoiseCVS/SVNと同じく、Windowsシェル上から左クリックで表示されるMercurial用のメニューでMercurialの操作ができます。コミットや、ログ表示、差分表示、同期(プッシュ/プル)などの基本的な操作ができます。TortoiseSVN/CVSと同じくファイルにアイコンが追加され、編集されたファイルや新規に追加されたファイルが分かるようになっています。

 利用上の注意として、2008年12月の原稿執筆時に利用したバージョン(TortoiseBzr 0.1)では、変更したファイルを含む「ディレクトリ」を選択してコミットする必要があります。

図21 TortoiseBzrの画面 図21 TortoiseBzrの画面

■Eclipseプラグイン「bzr-eclipse」

 Bazaarに対応したEclipseプラグインとしてbzr-eclipseが提供されています(図22図23)。

図22 bzr-eclipseのメニュー 図22 bzr-eclipseのメニュー
図23 bzr-eclipseによるプロジェクトの画面 図23 bzr-eclipseによるプロジェクトの画面(画像をクリックすると拡大します)

 Mercurial、Gitと比べると、日本語メッセージが文字化けすることもなく、問題なく使えています。また、メニューはアイコンで分かりやすくなっています。

 ただし、日本語のファイル名のファイルについては、Bazaarの管理対象外となっていて、コミットしようとするとエラーが発生します。

 次ページでは、最後にSVNとGit、Mercurial、Bazaarを表でまとめて徹底比較します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。