バージョン管理システムで使われる用語の意味のメモ。主に CVS、Subversion、VSS (Visual SourceSafe) で使われる用語が対象。



- リポジトリ repository バージョン管理の履歴が保存されているところ。リポジトリのバックアップだけはしっかり取っておこう。



- ツリー tree リポジトリにある一連のファイルをまとめるディレクトリのようなもの。ツリー状になるのでこう呼ばれているようだ。VSS ではプロジェクト、CVS ではモジュールとも呼ぶ。



- チェックアウト checkout, 取得 チェックアウトと取得のどちらもリポジトリからファイルを取ってくることを指すが、バージョン管理システムの動作モデルによって微妙に意味が異なる。



コピー・修正・マージの動作モデルで動いている Subversion では、リポジトリからファイルを取ってきてローカルに作業コピーを作ることをチェックアウトと呼ぶ。



ロック・修正・ロック解除の排他動作モデルで動いている VSS では、リポジトリから単に取得することを「取得」と呼び、ロック付きで取得することを「チェックアウト」と呼ぶ。他のメンバーはチェックアウト中のファイルを修正できない。



- チェックイン checkin, コミット commit リポジトリに修正を反映させることをチェックインやコミットと呼ぶ。



- タグ tag, ラベル label 複数のファイルやツリーをまとめて名前付けするものをタグやラベルと呼ぶ。タグを指定した時点のファイルをまとめて取得したりするために使う。



たとえば、新バージョンの開発が終わってリリースするときなどにタグを打ったりする。こうしておけば リリースしたバージョン *** のビルドに必要なソースを全部取得したい、という場合もすぐに対応できる。



ちなみにタグは「打つ」もので、ラベルの場合は「貼る」もの。私の場合、なぜかバージョン管理のタグは「付ける」のではなく「打つ」という。



- 共有 share VSS で複数のプロジェクト間で同じファイルを扱うための仕組み。エイリアスやシンボリックリンクのようなもの。複数のプロジェクトで「共有」されたファイルを修正してチェックイン (CVS 風に言うと commit) すると、すべてのプロジェクトに修正が波及する。



- ブランチ branch ツリーを分岐させること。ブランチすると分岐元とは別にバージョン管理されるようになり、チェックインされた内容が他に自動的に波及しないようになる。明示的に分岐元と同期することはマージと呼ぶ。



分岐させる理由としては、元のツリーを壊すことなく大規模な機能追加をおこないたいとか、リリースに向けてバグ修正だけをするツリーを作りたいなどといったものがある。



ちなみに branch は枝という意味。朝ごはんと昼ごはんを一緒に食べるブランチ (BReakfast + lUNCH) は brunch なのでスペルが違う。



- マージ marge ブランチしたツリーに対し、別のツリーにチェックインされた修正を適用すること。VSS や Subversion では、マージは単なる差分の適用でしかなく、ブランチが統合されたりするわけではない。



- トランク trunk 主流となっているブランチのこと。HEAD とも呼ばれる。ちなみに trunk は幹という意味で、そこから「主流のブランチ」という意味になったのだろう。かばんを意味する trunk も同じスペルだけど、別の意味。



