Subversionでバージョン管理を行う場合、開発を進める上で標準的に推奨されるリポジトリの整理方法があります。
その整理方法に従っていれば、実際にリポジトリを運用していくとき、タグとブランチをどのように活用すれば良いのかの道しるべになるでしょう。
リポジトリのレイアウト
リポジトリの最上位階層(/)には以下のディレクトリを作成します。
/trunk /branches /tags
リポジトリに複数のプロジェクトがある場合はプロジェクトごとに以下のように作成します。
/project01/trunk /project01/branches /project01/tags /project02/trunk /project02/branches /project02/tags
「trunk」ディレクトリに開発のメインラインを格納し、「branches」ディレクトリには開発ラインを分岐したブランチを、「tags」ディレクトリにはタグを格納します。
リポジトリ運用の基本的な考え方として、
- 開発者がすべての新規作業分をtrunkにコミットする。
- リリースが近づいたらリリースブランチを作成する。
- ブランチ上ではバグフィックス以外の大きな変更はしないようにする。
- その間の機能追加などの大きな変更はtrunkで行う。
- ブランチはリリースするときにタグにコピーする。なお、タグはそれ以上変更しない(スナップショットとして使用する)。
- リリース後に見つかったバグの修正はブランチ上で行い、またタグにコピーし修正版をリリースする。
と、なります。この一連のプロセスを繰り返して、ソフトウェアを成熟させていくわけです。
上記レイアウトをあくまで推奨であり、それを無視しても構いません。チームとして使用しやすいものであれば、どのようなレイアウトでも問題ありません。