Subversionをはじめとするバージョン管理システムを使用していく上でおさえておく必要がある用語・考え方についてまとめています。
基本用語
リポジトリ
Subversionは各種ファイルを共有するための集中化システムです。その中枢にはそれらファイルや更新履歴・変更内容などを集中的に格納するスペースが必要です。
そのスペースのことをリポジトリと言います。
リポジトリは情報をツリー形式で格納します。これは、Windowsのファイルシステムと同じで、ディレクトリ(フォルダ)の中にファイルを作り、細かく分類して何百何千というファイルを整理し、管理する形式です。
チェックアウト
リポジトリからデータを取り出すことを一般的にはチェックアウトと言います。
ただし、Subversionでは、リポジトリから初めてファイルを取り出しローカルに保存することをチェックアウトと言い、それ以降に再度、他の誰かによって更新されたリポジトリからファイルを取り出してローカル上のファイルを最新版に保つことはチェックアウトとは言わず、アップデートと言います。
また、チェックアウトは「更新しようとしているファイルをロックする」という意味に感じる方もいるかもしれませんが、Subversionにおいては、単に、リポジトリからファイルをローカルにコピーすることを指します。
コミット(チェックイン)
リポジトリにファイルを書き込むことをコミットと言います。リポジトリに変更をコミットする(もしくはチェックインする)と表現します。
リビジョン番号
リビジョン番号はリポジトリがコミットを受け付けるたびに発行される番号のことです。(バージョン番号とも言います。)
Subversion以外のバージョン管理システムでは、リビジョン番号は個別のファイルに対して付与されることが多いですが、Subversionでは、個別のファイルではなく、ツリー全体に適用されます。例えば、ひとつのファイルを変更し、リポジトリにN番目のコミットが行われた状態を、N番目のリビジョンと表現します。「sample.cのリビジョン8」に言及した場合、それは「リビジョン8にあるsample.c」のことを指します。sample.cに変更がしばらく加えられていない場合などでは、リビジョン3にあるsample.cとリビジョン8にあるsample.cに差異がないこともあります。
ブランチ
ブランチとは、開発ラインを分岐(履歴の流れを分岐)して記録していくためのものです。分岐したブランチは他のブランチの影響は受ないため、複数の開発ラインを並行して進めていくことができます。
例えば、「安定版」「新規機能開発版」「バグ修正版」と開発ラインを分岐させることで、それぞれの開発ラインでは、他のメンバーの作業の影響を受けないようにします。そして目的の作業が完了したら、最後にメインのブランチにマージします。
ブランチは、独立して存在する複数の開発ラインを十分に遡っていくと、共通の履歴を持つものです。ブランチは必ず、何かのコピーとして始まり、そこから変遷を繰り返し、独自の履歴を持つようになります。
タグ
タグとは、ある時点のプロジェクトの「スナップショット」にあたります。プロジェクトの区切りがついた時点など、特定のリビジョンで、それ以上変更が発生しないような場面でスナップショットを作成します。
Subversionではタグとブランチに違いはありません。両方ともあるリビジョンのコピーを作成することを指します。ただし、目的が異なります。ブランチはそのあとも変更が加えられコミットされますが、タグは一度作成したらその後は永遠にコミットされません。文字通り、ある地点のスナップショットが「タグ」となるわけです。
ソフトウェアをリリースするときにタグを作成し、リリース後にバグが見つかった場合、修正はブランチ上で行い、再度、タグを作成しなおして、修正版をリリースするといった流れをとるのが一般的な使用方法です。
タグを作成することを「タグをつける」とか「タグを打つ」などと表現されることもあります。