Mercurial ~ Eclipseプラグイン

MercurialEclipse

EclipseからMercurialを使うためのプラグインがあります。

  • ソフトウェア更新サイト(メニューの[ヘルプ]→[新規ソフトウェアのインストール])としてhttp://cbes.javaforge.com/update/を追加
  • MercurialEclipseをインストール

Eclipse

このプラグインは、Mercurialのフロントエンドです。Windowsの場合、一緒にMercurialバイナリもインストールするよう推奨されており、ここをチェックしておくと、プラグインフォルダの下にhg.exeなどがインストールされます。既にインストール済みのMercurialを使いたい場合は、チェックを外しましょう。

リポジトリの管理

プラグインにリポジトリを管理させる手順が、いくつか用意されています。まず、リポジトリ作成とプロジェクト作成を一度に行うには、[ファイル]メニューの[新規]→[その他]→[Mercurial]を使います。

レポジトリ

  • 既存のリポジトリをクローン化し、それをプラグインで管理する
  • 新規にリポジトリを作り、それをプラグインで管理する

どちらの場合も、ワークスペース下に新規プロジェクトを作ります。

一方、既に作成済みの、既存プロジェクトのリポジトリをプラグインに管理させるには、プロジェクトのコンテキストメニューから[チーム]→[プロジェクトの共用]を使います。

以上の3通りの手順のどれかを実行し、下記の状態になれば、Eclipseからリポジトリを操作する準備ができたことになります。

  • プロジェクトがあり
  • そのプロジェクトに、.hgフォルダ(仮にローカルリポジトリと呼ぶ)があり
  • プラグインが、その .hgフォルダを認識している

リポジトリの操作

コミットや履歴表示、比較といった、リポジトリの操作は、[パッケージ・エクスプローラー]ビューか[Mercurial Repositories]ビューから行うことができます。CVSやSubversionユーザならお馴染みだと思いますが、フォルダやファイルのアイコンの右下に付いた小さな円柱の絵が、リポジトリの管理下にあることの証です。

ビュー

また、[チーム同期化]パースペクティブからでもリポジトリを操作できます(こっちの方がオススメです)。

同期化ビュー

Mercurialプラグインでは、CVSやSubversionよりも「同期化」の役割が広がっています。CVSやSubversionの同期化は、リポジトリと作業フォルダとの同期をとるのが主な目的でした。Mercurialでもそれは可能です(上図のUncommited欄)。しかしMercurialの同期化は更に、ローカルリポジトリと別のリポジトリとの同期をとるという役割も持っているのです(上図のImcoming欄とOutgoing欄)。

  • 作業フォルダとローカルリポジトリの同期
  • ローカルリポジトリと別のリポジトリ(仮に、リモートリポジトリと呼ぶ)との同期

そのため、同期化相手となるリモートリポジトリの場所を指定する必要があります。前節で、クローン化によりローカルリポジトリを作った場合は、デフォルトでクローン元が同期化相手になります。クローン化以外の方法でリポジトリをプラグインに登録した場合は、プラグインには同期化相手が分からないので、[Synchronize]ビューが空っぽ(Uncommited欄などが無い状態)になっているはずです。同期化相手を教えてやるには、同期化ボタンを使います。

同期化

ダイアログの指示に従って、同期化相手の位置を指定します。

同期化相手

これで、[Synchronize]ビューに同期状態が表示されるようになります。

制限とバグ?

[Synchronize]ビューは便利なのですが、操作できるプロジェクトは1つだけです。なので、同じワークスペース内の別のプロジェクトのローカルリポジトリを操作する場合、前述の同期化ボタンでプロジェクトを切り替える必要があります。

リポジトリ選択

ただ、残念ながらこの辺はバグっているようで、この操作はFinishできません(2013-08-30時点の最新バージョン)。これを回避するには、一旦、ワークスペースからプロジェクトを削除し(同期化したいプロジェクトだけを残し)、上記のダイアログをFinishさせてから、削除したプロジェクトを戻す(インポートする)、といった面倒な手順が必要みたいです。

また、[Mercurial Repositories]ビューの挙動にも、解せない点があります。このビューには、プラグインが認識しているローカルリポジトリとリモートリポジトリが表示されますが、リモートリポジトリの方は "Hg status pending..." となっていて、うまくアクセスできないようです。また、コンテキストメニューから"Remove"とやっても削除できません。

私は、リモートリポジトリをUSBメモリ(U:ドライブ)に格納しているので、その辺も上記の挙動に影響している可能性はありますね。

Last modified:2013/08/30 14:51:21
Keyword(s):
References:[Mercurial(分散SCM)]
This page is frozen.