N2 ToolBox(跡地)

跡地です。引っ越しました。http://d.hatena.ne.jp/nosen

Mercurial使用感

2009-06-06 00:51:36 | オープンソース
最近仕事ではPHPのフレームワークをつくったりして暮らしているのですが、
どうせなら使ったことないツールをためしてみようと思い、
バージョン管理にMercurial、Issue TrackingにRedmineを使っています。

もう使い始めて半年くらいになりますが、Mercurial は非常に良いですね。

バージョン管理のモデルがSVNよりずっと安全・確実で、おかしなことが起こりにくいのに、
運用はずっと柔軟にできます。

安全・確実さという点でいうと、リモートのリポジトリにローカルの変更点をPushする際に、
ローカルにないリモートのリビジョンと、ローカルのリビジョンをマージすることを
強制する点が良いです。

コミットだけしてアップデートをしなかったために起きる問題を回避できます。

マージする前に、ローカルのワーキングコピーの変更点をコミットすることを強制する点もすばらしい。
マージに失敗しても、ローカルの変更がどこかへ消えてなくなってしまう自体だけは避けることができます。

繰り返しマージする場合に、前回マージした場所を覚えていて、差分のみをマージする点もすばらしい。
既にマージしたところが差分として表示されないので、本当に重要な部分に集中することができます。

結果として、SVNで普通にUpdate/Commit する感覚でブランチがマージできるので、
恐ろしく気軽にブランチが切れます。

分散型であるが故の運用の柔軟性も魅力です。

リポジトリは思い立ったその場ですぐつくれるし、
リポジトリをHTTPで公開する設定も簡単です。
フレームワーク用のリポジトリをクローンして、フレームワークを利用するプロジェクトのリポジトリを
作り、適宜フレームワークへの変更点を個別プロジェクトのリポジトリにマージしながら開発するといったスタイルは
分散型のリポジトリであるが故に可能になることでしょう。

ローカルに完全なリポジトリがクローンされているが故に、対障害性も高いです。

ちなみにgitでなくMercurialを選んだのは、完全に勘です。
なんとなくマルチバイト文字の処理とか、Windows上での挙動とかが大丈夫そうな感じだったから。。くらいの感じ。

あと、オフラインで作業できるというのは、今日びそんなにメリットでないと思われるかも知れませんが、
使ってみると、つまらない会議に出席せざるを得ないときにこっそりコーディングできたりして意外に便利です。

Redmineの話はまたにします。

最新の画像もっと見る