Mercurialを触ってみた

前もって行う準備はインストーラを実行するだけ.

さっそくNetBeans6.1英語版+日本語zip(まだ日本語版にさしかえてない)で触ってみた.


プロジェクトの初期化をえらぶだけでリポジトリが生成されて準備完了.

変更したところなどがリアルタイムでソースコードに色がついてわかる.これ5.5.1まではなかったはず.

初期化したときに生成されるのはこの2つ.

「.hg」というフォルダにバージョン管理されることになる.

つまり,各ディレクトリに隠しディレクトリが作られるとかそういう汚染がないのだ.

すばらしい.


履歴を表示してみた.

分散型の場合リビジョン番号だけじゃなくてチェンジセットIDも併記したほうがいいと思う.リビジョン番号はローカルでのただの連番だろうから.


ファイル名のリネームはコピー&削除という動作.これはMercurialとして正しい動作(たぶん)なのだが,NetBeans上でも2回の操作が必要となる.しかも,削除の状態情報はすぐに表示されず,対象となるディレクトリに何かの変更があったときに一緒についてくる.ここは注意だ.

また,リネームはコピーはいいとしても,削除はファイルそのものが消えているためにその消えたファイルを選択してコミットということができない.そのファイルを含むディレクトリを選択してコミットすると削除も反映することができるのだが,このとき間違ってプロジェクト全体を選択してコミットしないように.

NetBeans5.0のCVSのときから続いているバグだと思うが,buildやdestフォルダも管理対象となってしまってコミット対象となってしまう.削除が含まれた変更ではプロジェクト全体を選択しないように.あくまでも以下の図のようにソースパッケージなどを選択した状態でコミットするのだ.

プロジェクト全体をコミットするのは最初の1回目だけでいい.もし間違ってbuildやdestを管理対称にしてしまった場合,生成物をすべて削除を選んだ後,プロジェクト全体をコミットするとよい.

リネームはコピー&削除という動作ではあるが,もちろん過去の変更の履歴としてしっかり追えるので問題はない.

そのほかに注意すべきところとしてはメッセージに改行はいれないこと.いれても2行目以降は見ることができない.


これはいいですなぁ.

スタンドアロンでバージョン管理する場合にもっとも問題なく気兼ねなく使える.リポジトリを別途用意しそことのやり取りをするというCVSsubversionとくらべて敷居はかなり低いと思う.

バージョン管理の入門用には集中型より分散型のほうがいいかもしれませんね.

プロジェクト内に1つディレクトリができてそこで管理されるだけですから.

TortoiseHGというGUIで管理するツールもあるのだが,現在のバージョンでは日本語等をまともに扱えないようなので「一見動いているように見えても」注意らしい.

NetBeansMercurialをネイティブサポートしてもいい気がする.