Subversion、Git リポジトリの標準レイアウト (standard layout) における trunk, branches, tags

Git
スポンサーリンク

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でリポジトリのレイアウト trunk, branches, tags

さらに細かく、Subversionでのレイアウトを見てみましょう。

 

以下に、Subversionの公式のベストプラクティスが記載されています。

Subversion Best Practices

 

たとえば、calc, calendar, spreadsheet という3個のプロジェクトがあったとして、リポジトリのレイアウトとして以下の2通りが考えられます。

 

レイアウト案1

 

レイアウト案2

 

案1と案2で、どちらが正しい、どちらが間違っているということはないです。

ただし、一般的には案1の方が好まれているようです。

どうすればよくわからずに、悩むようなら案1のレイアウトにしましょう。

トランク (trunk) での作業

トランク (trunk) には通常は、安定して動作するものを置いておきます。

 

大きな機能の開発はブランチで行い、ブランチでテストを行い、十分安定したと判断したものをトランクにマージするようにします。

まれに、トランク (trunk) で大きな作業を行い、正常に動作しなかったりするものをコミットする人がいますが、他の開発者に迷惑をかけるので止めましょう。

ブランチ (branch) の作成

大きな機能の開発や、あるいは特定のリリースに向けてテストを行う際はブランチで行います。

 

例えば、レイアウト案1の場合、

trunk 以下のファイルをすべて branches/version1 にコピーします。

 

trunk 以下のファイルをすべて branches にコピーしてはいけません。

branches の直下にはブランチ名のフォルダ名が入ります。

ブランチでは特定の開発とテストを行い、安定化させます。

タグ(tag) の作成

タグ(tag) はリポジトリのスナップショット、凍結です。

通常は、リリースする際にタグを打ってから、リリースを行います。

リポジトリに付けるラベルのようなもの、として覚えておけばよいでしょう。

 

例えば、レイアウト案1の場合、

branches/version1 以下のファイルをすべて tags/version1 にコピーします。

 

Subversionの場合、実は branches と tags ではフォルダ名が異なるだけで、本質的な差はありません。

運用として、

  • branches/version1 は、開発、安定化しながら、変更する。
  • tags/version1 は、リリース用のスナップショットとして、変更を行わない。

という形で運用を行います。

 

 

Git
スポンサーリンク
スポンサーリンク
うらしたをフォローする
スポンサーリンク
urashita.com 浦下.com (ウラシタドットコム)

コメント

  1. […] Subversion、Git リポジトリの標準構成 (standard layout) の考え方と開発の進め方S… […]

タイトルとURLをコピーしました