分散リポジトリ中心のSCMを使うべきなの?

Mercurial では実現できても、 CVS (あるいは他の集中リポジトリ型の SCM ツール) を利用した場合には実現が難しい(あるいは運用が面倒な) 構成管理のシステム構成例を示します。


多分、きっと僕は、既にCVS脳でありSVN脳になっていて、SVNに対してほとんど疑問を持っていない。
分散リポジトリを使うかどうかってのは、結局の所、どんだけマージするのか?って話かと。
で、正直な話、僕は余り頻繁にマージしてない。


僕が漫然と感じているのは、CVS脳でSVN脳だと、余りマージしなくても良い様にするんじゃないかな…と。
いや、正直、SVNですらブランチを切ってトランクとマージしていくのは、地獄の様な作業になる。


所がどうだ。分散リポジトリを使うと、要は人類皆ブランチって事らしい。
で、引用元を見ると、作業する時には、もう常にずっと、マージしろ、と。
svn updateする様に、日常的にマージしろ、と。
そう考えると、まぁ、何か出来そうな気がしてくる。
リポジトリツリーのツリーみたいな感じで、それぞれを履歴管理しつつ、更にブランチAのブランチBを作って、
そのブランチBをブランチAにマージした上で、トランクにコミットみたいな事が無理なく出来る…とある。


これは、中々に面白い。
ブランチのブランチでも、ちゃんとトランクとマージすれば、トランクにコミット出来る。
ローカルでコミット履歴を構築出来るから、至極私的なコーディングが凄くし易い感じ。

ちょっと真面目に使ってみようかしらん。
で、eclipseプラグイン。持ってる機能はこんな感じ。
必要なモノは、一通り実装されてるんかな…。

Implemented mercurial commands

* hg init
* hg clone
* hg commit
* hg add
* hg remove
* hg diff
* hg log (Output in History View you can from History view open old revisions in the editor)
* hg annotate (Output in console)
* hg status
* hg view (Only on the project)
* refactor->move refactor->rename (reports problems but works do a refresh..)


eclipseプラグインを使わないなら、この辺のマージプログラムも使うといいかもね。

ファイルやフォルダの比較ができてマージもできる、WinDiffを使い易くしたようなソフトWinMergeの日本語版
GUICVS, Subversionクライアントのお供にでもどうぞ。


まぁ、あまり本質は関係ないけども、こんな拡張もあるらし。

この拡張は、 チェンジセットツリーを可視化するための (Graphviz の) DOT 言語ソースを生成します。


僕が、大きな期待をしているのが、このBisectExtension。

This extension (hbisect) eases looking for bugs by doing a binary search in O(log(n)). It adds the bisect command.

最初にbisectの話を見たのはGitの方だったけども、Mercurialにもある。
もしbisectによって、バグが紛れ込んだリビジョンを厳密にかつ、自動的に特定する事が出来るんだとしたら、
これは、非常に重大なツール…という事になる。SVNなんぞ使っている場合ではない。


追記:
eclipseからだと、hg pullが出来ないジャン…。
ううむ…これじゃあ、自由自在に人の変更を取り込む事が出来ないじゃないか…


こんなのもある。

MercurialTrac のメモ