Subversionにおけるtrunk, branches, tagsの使い方

Subversionのバージョン管理の方法で覚えたことがあったのでメモ。
リポジトリに作成する、trunk, branches, tagsにはそれぞれ意味がある。

trunkについて

trunkは動作が保証されたソースファイルの本流である。本流のデータなので1つしか存在しない。trunks(英語の複数形)ではないので、基本的にソースの本流は1つしか存在しない。
ディレクトリ構成は以下のようになる。

../trunk/対象のファイル

branchesについて

branchesは各機能の開発の作業場。不具合がある場合もある。branchesは英語の複数形なのでbranches内には複数のブランチを作成して作業する。
ディレクトリ構成は以下のようになる。

../branches/任意のブランチ名/対象のファイル

tagsについて

tagsは納品時など、決まったタイミングのtrunkを取っておく場所。tagsは英語の複数形なのでtags内には複数のタグを作成して作業する。
ディレクトリ構成は以下のようになる。

../tags/任意のタグ名/対象のファイル

これらは以下のようなワークフローで上手く使い分けながら作業する。
trunk → branches → trunk( → tags) → branches → trunk( → tags) ……

具代的には、以下のような流れになる。

  1. 動作確認済みの状態でブランチをトランクにマージする
  2. トランクからタグを作成する
  3. トランクからブランチを作成する

流れが理解出来たところで、以下よりTortoiseSVNからの操作方法を説明する。

branchesのブランチからtrunkにマージする

brachesにて作業を行った後は、任意のブランチを動作が確認できたタイミングで本流であるtrunkへマージする必要がある。

TortoiseSVNでマージを行う方法

クライアントのメニューからマージを選択する。マージタイプは適切なものを選択する。TortoiseSVNでは、実際にマージを行う前にマージのテストを行うことができるので是非この機能を活用したい。

trunkからtagsにタグを作る

branchesのブランチからtrunkへのマージが完了したら、それと同じタイミングで新たにtagsにタグを作る。タグ名にはバージョン番号を使う。例えば、バージョン番号はv1.0.0.0のように命名する。

TortoiseSVNでタグを作成する方法

クライアントのメニューからブランチ/タグの作成を選択する。

trunkからbranchesにブランチを作る

branchesのブランチからtrunkへのマージが完了したら、それと同じタイミングで、新たにブランチを作成する。ブランチ名にはタイムスタンプ付きのリリース名称などを使う。例えば、リリース名称はfor-1st-update_20130101のように命名する。

TortoiseSVNでブランチを作成する方法

クライアントのメニューからブランチ/タグの作成を選択する。

追記

2012年当時はSubversionを使っていたがSubversionによるバージョン管理を辞め、代わりにGit + Githubの環境に移行した。

参考
会社の先輩からの指導