「バージョンコントロールシステムの比較」の版間の差分

提供: tknotebook
移動: 案内検索
(リポジトリ)
(スナップショット)
26行: 26行:
  
 
VCS はリポジトリにファイルやディレクトリの様々な時点の「状態」を再現することができますが、
 
VCS はリポジトリにファイルやディレクトリの様々な時点の「状態」を再現することができますが、
特定の時点のファイルやディレクトリの状態のことを、ここでは'''「スナップショット」'''と呼ぶことにします。
+
特定の時点のファイルやディレクトリの状態のことを、ここでは'''「スナップショット」'''、または '''SS''' と呼ぶことにします。
  
 
'''「スナップショット」'''にはファイルやディレクトリの状態の他に、スナップショットを登録した人や登録日時
 
'''「スナップショット」'''にはファイルやディレクトリの状態の他に、スナップショットを登録した人や登録日時

2016年11月7日 (月) 02:00時点における版

このページはまだ正式に公開されていない下書きです。

まだ、間違いや嘘がたくさん混じっているはずです。

ご注意ください!!!

バージョンコントロールシステム(VCS)の基本

まずここではバージョンコントロールシステム(以降VCS)の基本的な考え方と用語について解説します。

リポジトリ

VCSは様々なファイルやディレクトリをひとまとめにしてそのバージョンを管理します。 このひとまとめにしたファイルやディレクトリなどの内容を集めたものをリポジトリといいます。

単にファイルやディレクトリを集めただけでは、それは単なるファイルシステムですが、 リポジトリの中のファイルやディレクトリには「歴史」が含まれており、 ファイルやディレクトリがいつ誰によって作られ、どのように変更されて行ったかが全て保存されています。

リポジトリの中には様々な時点のファイルやディレクトリの状態が、何らかの方法で全て保存されており、 ファイルやディレクトリを任意の時点の状態に復元することが可能です。

VCSのリポジトリの図.png

スナップショット

VCS はリポジトリにファイルやディレクトリの様々な時点の「状態」を再現することができますが、 特定の時点のファイルやディレクトリの状態のことを、ここでは「スナップショット」、または SS と呼ぶことにします。

「スナップショット」にはファイルやディレクトリの状態の他に、スナップショットを登録した人や登録日時 など様々な情報が追加されています。

スナップショットは Subversion では リビジョン、Git では スナップショットコミット、Mercurial ではコミットチェンジログと呼ばれます。

スナップショットの実態は、隣の世代のスナップショットとの差分情報を中心にした小さなものが多いため、Mercurial のように まるで変更履歴のように言うこともありますが、 スナップショットとは、その実装という観点では、リポジトリに含まれる、ある時点での全てのファイルとディレクトリを復元するのに必要な情報にたどり着くための全情報のことです。

スナップショットとは論理的にはある時点での全てのファイルとディレクトリの状態+αとと考えてよいものです。 つまり、「スナップショット」という言葉通り、フォルダとファイルのある時点での状態を切り取ったスナップ写真です。

Tip: Mercurial はフォルダ情報を保持しないため、空のフォルダは再現できず消えてしまいます。

リポジトリの歴史

スナップショットはある時点でのファイルやディレクトリの全情報を含むので、それぞれのスナップショットは 独立に使えるものです。

リポジトリはスナップショットの集合体ですが、それだけでは VCS としてあまり役に立ちません。

我々が VCS を使うのはスナップショットの歴史を刻み、またスナップショットの歴史を覗きたいからです。 スナップショットに歴史があるので、われわれはVCSのなかから目的のスナップショットを選ぶことができます。

スナップショットの歴史とは、どのスナップショットを元に、次のスナップショットが作られていったかを示す一連の情報です。