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

目次

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

この章は Subversion book にある同章をわずかに変更したものです。Subversion book のオンライン版は、 http://svnbook.red-bean.com/ から読むことができます。

この章では短く簡単に Subversion の入門の説明します。バージョン管理システムが初めてならば、この章を読めばわかるでしょう。一般的なバージョン管理の概念から始めて、 Subversion の根底にある考え方を説明し、 Subversion の使い方の簡単な例を紹介します。

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

リポジトリ

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

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

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

このどこが画期的なのでしょうか。普通のファイルサーバーと同じようにもみえます。確かにリポジトリ ファイルサーバーの一種ですが、ふだん見かけるものとは違います。 Subversion のリポジトリが特別なのは、そこに書き込まれた すべての変更を記憶している ことです。すべてのファイルに対するすべての変更、さらにディレクトリツリー自体に対して行われた変更、たとえばファイルやディレクトリの追加、削除、再配置、などを記憶しています。

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