Subversionにおいて最上位のフォルダの構成は、trunk・branches・tagsとするのが一般的です。
これはマニュアルにも記載されており、公開されている様々なリポジトリでもほとんどがこのようになっています。
私はプロジェクトごとに以下のようにディレクトリを作成してソース管理をしています。
プロジェクト名
|- trunk/
|- branches/
|- tags/
ちなみにSubversionにこのような機能がある訳ではありません。
そのため、必ずこのようにしなければいけないという訳ではありませんが、初めはこの構成に慣れていた方が良いでしょう。
まずはそれぞれの役割について説明します。
ソースなどのファイルを管理する最も中心な部分です。
管理するファイルを全てこの中に入れましょう。
基本的にtrunkのみあればソース管理をすることができるので、初めはbranchesやtagsは考えなくても結構です。
trunkだけを使った方法は、このディレクトリをチェックアウトして作業を行い、コミットして終了という一番シンプルな方法になります。
各機能などを個別に改修したいときなどに良く使います。
例えば、ある改修でバージョン1とバージョン2があるとすると、V1をtrunkに反映するのを待たずにV2を実装することができます。
実装後もそれぞれ好きな時に反映を行うことができます。
複数の改修がある場合には必要となるでしょう。
名前の通りタグ(スナップショット)を作成します。
納品するファイルをそのまま保存しておくのです。
一度作成したタグは基本的に変更してはいけません。
変更したい場合は、一度ブランチを作成して変更した後に、再度新しくタグを作成しましょう。
タグの名前は、V1.0-xxx、V1.1-xxx、V1.2-xxx のように版が分かるように。
https://[URL]/ にリポジトリがあり、ソースは「https://[URL]/trunk」以下に配置されていることを前提とします。
リポジトリの作成方法などは、下記をご覧ください。
Subversion リポジトリの作成から各操作のまとめ
まずは一般的な構成、branchesとtagsのディレクトリを追加しましょう。
svn mkdir https://[URL]/branches
svn mkdir https://[URL]/tags
trunkをコピーして開発用の領域をbranches以下に作成します。
今回は「v1-add-auth」という名前で追加します。
どんな内容か分かる名前にしましょう。
svn cp https://[URL]/trunk https://[URL]/branches/v1-add-auth
svn checkout https://[URL]/branches/v1-add-auth v1-add-auth
trunkをコピーして「v1-add-auth」というディレクトリを作成し、それを作業環境へチェックアウトしました。
ここで一通り開発や改修などを行います。
作業が一通り完了したらbranchesにコミットします。
svm ci
branchesでの開発が終わりコミットしたら、trunkにマージします。
まずは、作業開始点のリビジョンを確認しておき、その後trunkに切り替えます。
svn log --stop-on-copy
svn switch https://[URL]/trunk
次はマージです。
例として、「svn log --stop-on-copy」でr100と表示された場合は、-r で「100:HEAD」と指定します。
リビジョン100~最新までの変更をマージするという意味です。
初めに、「--dry-run」を指定して、差分を確認しましょう。(実際にマージは行われません。)
svn merge --dry-run -r 100:HEAD https://[URL]/branches/v1-add-auth
確認した内容で問題なければ実際にマージします。
svn merge -r 100:HEAD https://[URL]/branches/v1-add-auth
これで作業環境へブランチの内容がマージされました。
最後にtrunkへコミットして反映します。
svm ci
今までの手順でリポジトリへの反映は完了しました。
次にタグをつける手順です。
これはとても簡単でコピーするだけです。
svn cp https://[URL]/branches/v1-add-auth https://[URL]/tags/v1.0-add-auth-20131129
作成するディレクトリの名前は、内容が一目で分かることや、日付をいれることに注意してください。