Manuals

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

目次

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

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

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

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

リポジトリ

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

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

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

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

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

TortoiseSVN homepage