バージョンコントロールシステムの比較

提供: tknotebook
2016年11月6日 (日) 23:38時点におけるNakamuri (トーク | 投稿記録)による版

移動: 案内検索

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

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

ご注意ください!!!

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

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

リポジトリ

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

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

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

スナップショット

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

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

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

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

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

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

リポジトリの歴史