*

* SVN Index   * Tips   * Top

Subversion(TortoiseSVN)での一般的なフォルダの取り扱い(配置)方法

Subversionのリポジトリの管理を任されてしまいました。 最初の根本的なところで、どのようにフォルダを配置したらよいでしょう?

(ご注意) このページをご利用になった結果の影響については、 一切責任を負いませんので、あらかじめご了承願います。

  1. はじめに
    Subversionのマニュアルに書いてある通りではありますが、 最上位のフォルダの構成は、「trunk/」「branches/」「tags/」とするのが一般的です。 インターネットに公開されているリポジトリを見ても、大概そうなってます。 どうせ初めて作るのであれば、我流でやるよりは一般的なものにしておくことで、 Subversionを知っている新入社員や派遣の人に余分な説明をせずに済むでしょう。 もちろん、1つのリポジトリで2つ以上のプロジェクトを管理するなら、 最初の階層をプロジェクト名にして、 それぞれのフォルダの中に「trunk/」「branches/」「tags/」があってもよいでしょう。 もし、このことを知らずにプロジェクトを始めてしまっている場合でも問題ありません。 このように構成に変えたいのであれば、 現在既に存在しているフォルダをtrunkの下へ移動させればよいです。 移動させても中にあるのファイルの履歴はそのまま残ります。

  2. trunkフォルダ
    trunkは辞書を見ると、木の幹とか、体の胴体とか、そのように書かれています。 最も中心になる部分です。 プログラムやドキュメントは、「trunk/」の中へ入れていきます。 最初は、「branches/」や「tags/」のことは考えなくても大丈夫です。

  3. branchesフォルダ
    時間が経って、作っているものをバージョン1としてリリースしたくなりました。 もちろんまだこれで完璧ではなく、不具合の修正はやらないといけません。 ただ、その間にも同時に「trunk/」へはバージョン2以降へ入れたい機能も追加していきたいです。 こんなときは、「trunk/」でバージョン1の機能の作成が一段落したところ、 バージョン2の機能を入れ始める前のきりのいいところで、 「trunk/」を、「branches/」の中へ「v1/」など(よくわかる名前なら何でもよい)の名前で ブランチを作成しましょう。 うまいタイミングを決めるのは難しいですが、 バージョン1の機能がほぼ入りきっていて、かつ、そのあとの機能はほとんど入っていなくて、 ある程度完成度が高くなっている時機をねらってください。

  4. brancesフォルダとtrunkフォルダ
    ブランチを作成したあとは、バージョン1には関係のない 新しい機能はこれまでどおり「trunk/」だけを修正していけばよいです。 一方、バージョン1の機能のテストをしているときに、 修正しなければならないことが見つかったときは、 「branches/v1/」を修正したあと「trunk/」へマージしましょう。 もちろん「trunk/」を先に修正して「branches/v1/」へマージしてもよいです。 マージの作業は忘れないようにしてください さもないと、せっかくバージョン1で修正した不具合が、 バージョン2以降で再発することになってしまいます。

  5. tagsフォルダ
    さらに時間が経って、バージョン1は完璧になりました。 バージョン1を出荷します。 このタイミングで、「branches/v1/」から 「tags/v1.0/」など(よくわかる名前なら何でもよい)へブランチを作成しましょう。 やっていることはフォルダの名前の通りタグ付けです。いわゆる出荷したファイルそのものです。 スナップショットといえばわかりやすいでしょうか? なお、いちど作成したtags以下のファイルは、基本的には変更(コミット)しません (変更するとスナップショットの性格が失われてしまいます)。 変更が必要であれば、「branches/v1/」を変更して、 またバグ修正版を出荷できるようになったところで「tags/v1.1/」をブランチします。 もし、どうしてもtags以下のファイルの変更が必要になった場合は、 「tags/v1.1/」から「brances/v1.1/」へブランチを作成して、 brancesで変更しましょう。完成したら 「brances/v1.1/」から「tags/v1.1.1/」へブランチすればよいです。

  6. まとめ
    ここまでくればおわかりと思いますが、 「コピーをとる」ことも、「分岐を作成する」ことも、「タグをつける」ことも、 すべて操作方法は同じです。Subversionでは「svn copy」、 TortoiseSVNでは、[TortoiseSVN] → [ブランチ/タグ]になります。 この作業によってサーバ上で余分に消費するディスクはほとんどありません。 コピーをとったというその情報が追加されるだけです。 サーバのディスク残り領域のことは気にせず、 運用の都合をよく考えて、必要があれば積極的にブランチ/タグを作成するとよいでしょう。


shacho@critical.ne.jp
Last modified: Wed Oct 22 18:00:00 JST 2008