Subversion、Git リポジトリの標準構成 (standard layout) における trunk branches, tagsのレイアウトと開発の進め方についてまとめてみました。
目次
リポジトリの標準構成 (Standard Layout)
リポジトリには、標準構成 (Standard Layout) と呼ばれる構成が存在します。
Subversionの場合、慣習的に standard layout として
- trunk
- branches
- tags
というフォルダに分けて識別します。
これは、機能ではなくて慣習ですが、必ずこのようにして置きましょう。
一方、Gitの場合、ブランチとタグが機能として備わっています。
トランクという機能はありません。
Gitでは、Subversion の trunk に相当するのが masterブランチになります。
commit は 任意のタイミングで、自分が作業している trunk か、またはブランチに対して行います。
Version 1 や Version 2 のようなリリース作業を行う場合は、適宜、ブランチを作成して、開発のtrunk とは分けて管理します。
このようにすることで、Version 1 や Version 2 の各ブランチついては、不必要な commit を行わず、安定化、リリース作業に専念できるようになります。
さらに細かく、Subversionでのレイアウトを見てみましょう。
以下に、Subversionの公式のベストプラクティスが記載されています。
たとえば、calc, calendar, spreadsheet という3個のプロジェクトがあったとして、リポジトリのレイアウトとして以下の2通りが考えられます。
レイアウト案1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/ calc/ trunk/ tags/ branches/ calendar/ trunk/ tags/ branches/ spreadsheet/ trunk/ tags/ branches/ … |
レイアウト案2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/ trunk/ calc/ calendar/ spreadsheet/ … tags/ calc/ calendar/ spreadsheet/ … branches/ calc/ calendar/ spreadsheet/ … |
案1と案2で、どちらが正しい、どちらが間違っているということはないです。
ただし、一般的には案1の方が好まれているようです。
どうすればよくわからずに、悩むようなら案1のレイアウトにしましょう。
トランク (trunk) での作業
トランク (trunk) には通常は、安定して動作するものを置いておきます。
大きな機能の開発はブランチで行い、ブランチでテストを行い、十分安定したと判断したものをトランクにマージするようにします。
まれに、トランク (trunk) で大きな作業を行い、正常に動作しなかったりするものをコミットする人がいますが、他の開発者に迷惑をかけるので止めましょう。
ブランチ (branch) の作成
大きな機能の開発や、あるいは特定のリリースに向けてテストを行う際はブランチで行います。
1 2 3 4 |
/ calc/ trunk/ branches/version1/ |
例えば、レイアウト案1の場合、
trunk 以下のファイルをすべて branches/version1 にコピーします。
trunk 以下のファイルをすべて branches にコピーしてはいけません。
branches の直下にはブランチ名のフォルダ名が入ります。
ブランチでは特定の開発とテストを行い、安定化させます。
タグ(tag) の作成
タグ(tag) はリポジトリのスナップショット、凍結です。
通常は、リリースする際にタグを打ってから、リリースを行います。
リポジトリに付けるラベルのようなもの、として覚えておけばよいでしょう。
1 2 3 4 5 |
/ calc/ trunk/ branches/version1/ tags/version1/ |
例えば、レイアウト案1の場合、
branches/version1 以下のファイルをすべて tags/version1 にコピーします。
Subversionの場合、実は branches と tags ではフォルダ名が異なるだけで、本質的な差はありません。
運用として、
- branches/version1 は、開発、安定化しながら、変更する。
- tags/version1 は、リリース用のスナップショットとして、変更を行わない。
という形で運用を行います。
コメント
[…] Subversion、Git リポジトリの標準構成 (standard layout) の考え方と開発の進め方S… […]