コンセプト

CVS/Subversionとの違い

旧世代のSCM(CVSやSubversion)ユーザにとって、Mercurialのコンセプト上の特徴は次の2点だと思います。

  • 変更履歴の最小単位は、ファイルではなく、チェンジセットである
  • マスターリポジトリを持たず、リポジトリを分散できる

例えば、あるバグを修正するために3つのファイルをまとめて変更すれば、それが1つのチェンジセットになります。ファイル個々の変更ではなく、変更目的の方に重点を置いていると言えそうです。

またリポジトリを分散できるので、各開発者は自分専用のリポジトリを何個でも持つことができます。CVSやSubversionでは、他の開発者への影響を心配して無意識にチェックイン頻度が下がってしまいますが、Mercurialでは、未完成のファイルでもプレッシャーを感じることなくチェックインできます。

登場人物

Mercurialコンセプトの構成要素について説明しておきます。

Mercurialのリポジトリは、作業ディレクトリストアとで構成されています。ストアにはリビジョンの全変更履歴が格納されています。作業ディレクトリは文字通りディレクトリで、そこにはストア内の特定のリビジョン(あるいは、それを修正したもの)が置かれます。

図.リポジトリ

あるリビジョン(A)に対して変更を加えリビジョン(B)ができるとき、(A)を(B)のと呼び、(A)に対する変更内容をチェンジセット(C)と呼びます。(A)と(C)が分かれば(B)を生成することができます。結局のところ、リビジョンの本質はに対する差分なので、リビジョンチェンジセットは同義として使われることが多いです。

作業ディレクトリにもがあります。下図では、作業ディレクトリのはリビジョンR2です。作業ディレクトリのファイルを変更してチェックインすると、リビジョンR4が増え、そのはR2となります。

図.親

リビジョンの変更履歴は、よく木に例えられます。リビジョンの増加を枝の成長に見立てます。成長の過程で枝分かれすることがありますが、それぞれの枝をブランチと呼びます。枝の先端(成長点)がヘッドです。ヘッドの中でも、最新のものがティップ(tip)です。

図.ヘッド

Last modified:2010/08/10 23:26:16
Keyword(s):
References:[Mercurial(分散SCM)] [Mercurial ~ ひと通り(個人で)]
This page is frozen.