argius note

プログラミング関連

ブランチ・タグ関連の運用について

DVCS(分散VCS)が花盛りな昨今、分散でないSVNの運用について考えています。

どのように作るか

マージについては場合による...かな?...のでパス。

  • 1.0.0リリース前
    • trunkのみ
* リポジトリ *
TheProject
  + trunk
    + .project
  + tags
  + branches
* ワークスペース *
TheProject [trunk]
  + .project
  • 1.0.0リリース直後
    • trunkの1.0.0としてリリースしたリビジョンからタグ"tags/1.0.0"を生成
* リポジトリ *
TheProject
  + trunk
    + .project
  + tags
    + 1.0.0
      + .project
  + branches
* ワークスペース *
TheProject [trunk]
  + .project
  • 1.0.0メンテナンスブランチ開始
    • タグ"tags/1.0.0"からブランチ"branches/1.0.x"を生成(1.0.1,1.0.2,...)
    • trunkとリンクしているプロジェクトは次のバージョン(1.1.0)用
    • "branches/1.0.x"を"TheProject-1.0.x"としてチェックアウト
* リポジトリ *
TheProject
  + trunk
    + .project
  + tags
    + 1.0.0
      + .project
  + branches
    + 1.0.x
      + .project
* ワークスペース *
TheProject [trunk] ->1.1.0を開発中
  + .project
TheProject-1.0.x [branches/1.0.x]
  + .project

イメージはこんな感じでしょうか。

  ↓
tags/1.0.0 → branches/1.0.x (1.0.1 → 1.0.2 → ... → endless)
  ↓
tags/1.1.0 → branches/1.1.x (1.1.1 → 1.1.2 → ... → endless)
  ↓
trunk

タグをREADONLYにする

タグは実質ブランチと同じで更新ができてしまいますので、タグを読取専用にします。方法は下記ページ参照。