Mercurial設定最近Flex Builderを使っているのですが,最初から対応しているバージョン管理システムがCVSしかないなくて困っていました.Flex BuilderはEclipseがベースなのでEclipse用のプラグインが動くはずだと思い,いじっていたら動いたようなので書いておきます.

まずMercurial Eclipseのサイトを見るとSoftware updateを使えと書かれていますが,Flex BuilderはSoftware updateのメニューが消してありますので使えません.そこで直接jarファイルをPluginsのページからダウンロードします.ダウンロードしたjarをFlex Builderのpluginsディレクトリ(Macなら”アプリケーション”→”Adobe Flex Builder 3″→plugins)に置いた後,Flex Builderを起動します.

ショートカット - 新規
起動後にMercurialの設定について聞かれますので,hgやgpgの場所などの設定をします.私の場合はfinkでMercurialを入れてあるので,それぞれ/sw/bin/hg,/sw/bin/gpgとしました.後は”パースペクティブの設定”→”新規”,”ビューの表示”でMecurialにチェックを入れれば設定完了です.

Mercurialで管理するためには,管理下に置きたいプロジェクトを右クリック→”チーム”→”プロジェクトの共用”→”Mercurial”で設定した後に,”チーム”→”Commit”で管理したいファイルをコミットすれば良いです.

以前書いたとおり,個人用のレポジトリはmercurial (hg)で管理しています.基本的な使い方は覚えているのですが,一度コマンドの内容を網羅したいと思い,入門mercurialを読んでみました.

各所にCVS/SVNでいままで管理してきた人向けの内容が書いてあるので,CVS/SVNから移行した人には良い本だと思いました.後,第5部のMercurial以外の世界との連携というトピックが良かったです.基のソースがCVS/SVNなどで管理されているときに手元の変更をどうやってmercurialで管理するかということについて,tipsがまとまっています.

アマゾンのサーバでエラーが起こっているかもしれません。
一度ページを再読み込みしてみてください。

CVSを個人用に使い始めてから8年以上経っているのですが,バイナリの扱いなど,CVSの様々な制約を我慢しながら使ってきました.SubversionやGitなど様々な後継のバージョン管理システムに移行したいと思いつつも,なかなかCVSから脱しきれませんでした.調査をして,Mercurialへなら簡単に移行できそうだったので,ついに今日思い切って個人のレポジトリをMercurialに移行することにしました.色々移行ツールがあるのですが,0.9.5以上のMercurialでは,本体に移行コマンドがあります.

Debian etchにあるMercurialは0.9.1なので,etch-backportsから1.0.1を入れました.aptの設定をすればaptitude install mercurialでインストールできます.


* /etc/apt/sources.list

# backports
deb http://www.backports.org/debian etch-backports main contrib non-free

* /etc/apt/preferences
Package: mercurial
Pin: release a=etch-backports
Pin-Priority: 999

Macは,fink install mercurial-py25でインストールできます.Windows/cygwinにはmercurial 1.0.2がありました.まだ試していませんが,TortoiseCVS/SVNのMercurial版であるTortoiseHgや,Eclipse pluginもあります.

CVSからの移行は,CVSレポジトリはなく,チェックアウトしたディレクトリから行います.この作法に少し戸惑いました.ConvertExtensionに詳しい内容が書いてありますが,とりあえずは$ hg convert [CVS directory] [HG directory]で変換できます.

CVS/SVNのような集中型レポジトリは,ある場所にルートのレポジトリを作り,全ての履歴がそこに集まるようになっています.作業をする場合は,ルートのレポジトリから作業用のディレクトリをチェックアウトします.それに対してMercurialは,完全な分散型です.レポジトリと作業用のディレクトリという概念はありません.cloneによって,clone元とまったく同じものがローカルに作られます.その間に優劣はありません.普段の作業時はローカルにコミットし,必要な変更部分を他のレポジトリに送ることができます.これにより,実験的なコードの開発が楽になったりします.例えば目的毎にcloneを作成して使い分け,いらないものは破棄ということが簡単にできます.もちろん運用上の問題として,マスターのレポジトリを決めておくことはできます.

最初cloneを作る際にはまった問題は,clone元がSSH越しだった場合の書き方です.host名の後ろに/が二つ必要でした.$ hg clone ssh://user@host//path

Tutorial(日本語)を見ながらいじっていますが,今のところhg convertで移行したファイルに問題は見つかっていません.ファイルが多すぎるので全部は確認できないのですが,様々な日本語エンコーディングのファイルやppt,pdfなどが入っていた割には普通に変換できています.