第2章 バージョン管理の基本概念

目次

リポジトリ
バージョン管理モデル
ファイル共有の問題
ロック・変更・アンロック法
コピー・変更・マージ法
Subversion は何を行うか?
Subversion の動作
作業コピー
リポジトリ URL
リビジョン
作業コピーのリポジトリ追跡方法
まとめ

この章は Subversion book にある同章をわずかに変更したものです。Subversion book のオンライン版は 以下で読むことができます。http://svnbook.red-bean.com/ (訳注 日本語では http://subversion.bluegate.org/doc/book.html で読めます)

この章では簡単におおざっぱな Subversion の概要を説明します。バージョン管理システムが初めてなら、この章が明らかにしてくれるでしょう。一般的なバージョン管理の概念から始めて、Subversion の根底にあるアイディアを説明し、Subversion の使い方の簡単な例をお見せします。

この章の例では複数のプログラムソースコードの共有を扱いますが、Subversion はどんなファイルでも扱えるということに留意してください。コンピュータプログラマを助けるためだけのものではありません。

リポジトリ

Subversion は情報共有の一元管理システムです。この核となるのがデータを格納する リポジトリ です。リポジトリは情報を ファイルシステムツリー (典型的なのはファイルやディレクトリの階層) の形で格納します。複数の クライアント がリポジトリに接続し、そのファイルを読み書きします。データを書き込むと他の人が情報を利用できるようになりますし、データを読み込むと他の人の情報をクライアントが受信します。

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

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

このどこが興味深いというのでしょうか? そこまでは普通のファイルサーバと同じように聞こえます。確かにリポジトリはファイルサーバの一種ですが、いつも目にするものとは違います。Subversion のリポジトリが特別なのは、そこに書き込まれたすべての変更を記憶しているということです。これはすべてのファイルに対するすべての変更と、さらにディレクトリツリー自体に対して行われたファイルやディレクトリの追加・削除・再配置といった変更も含まれています。

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