リポジトリ

Subversion は共有情報の一元管理システムです。最も重要なのは リポジトリと呼ばれる、データの格納庫 です。リポジトリは情報をファイルシステムツリー —一般的なファイルとディレクトリの階層構造—の形で格納します。 任意の数のクライアントがリポジトリにアクセスし このようなファイルの読み書きをします。データを書き込むことでクライアントは 他の人たちがその情報を使えるようにします。データを読み出すことでクライアントは 他の人たちの情報を受け取ります。図 1.1. 「典型的なクライアント/サーバシステム」はこれ を表したものです。

図 1.1. 典型的なクライアント/サーバシステム

典型的なクライアント/サーバシステム

どうしてこんなことが興味深いのか? ここまでのところでは、典型的なファイルサーバの 定義にすぎないように思います。そして実際、リポジトリはファイルサーバの 一種です。が、普通言うようなものとは少し 違います。Subversionのリポジトリの特徴はそれまで書き込まれた すべての修正をすべて憶えているところ です。すべてのファイル変更についても、また、ディレクトリツリーの自身の変更に ついてもそうです。このような変更は、ファイルやディレクトリの追加、削除、 再配置、などによって起こります。

クライアントがリポジトリからデータを読み出す際、通常はファイルシステムツリーの最新版だけが見えますが、ファイルシステムの 以前の 状態も閲覧できます。たとえばクライアントは、「先週の水曜日にこのディレクトリにはどのファイルがあったの?」 とか、「最後にこのファイルを変更したのは誰で、その人は何を変更したの?」 といった、履歴に関する質問をすることができます。この手の質問はすべてのバージョン管理システム のキモになるような質問です。つまりバージョン管理システムとは、時間と共に修正されるデータを記録したり、修正内容を追跡したりするように設計されています。