Mercurialのリポジトリ概念を理解する為に集中型のおさらいをする。

まずは、Subversion等の集中管理型?のおさらい。

trunk,branch,tagの役割

trunk 常に最新機能の開発に使うリポジトリ。このリポジトリから直接リリースすることはしない
branch リリース用のパッケージ。trunkからA.B.Xと採番して分岐を作り、リリースパッケージ開発&バグFIX用のリポジトリとする
tag branchで実リリースを行ったときのリビジョンのスナップショット

リリースの手順とtrunk,branch,tagの分岐の関係

リリースするときに、最新のtrunkから「X.Y.Z」というリリース用のブランチを作成する。
そのブランチを安定させた時点で「X.Y.0」とタグをつけて本番リリースする。

branchを作成するときの注意点

  • 必ずtrunkから分岐させる

メインラインとなるtrunkは最新開発用ブランチという役割を保つために、分岐は必ずtrunkから行う。
branchから分岐させて孫のbranch、ひ孫のbranchをさせてしまうと、trunkへのマージ作業が複雑化し、デグレを起こしやすい要因になりかねない。

  • trunkは正しくビルドできる状態で保つ

全ての開発者は、メインラインに対して作業を行う。コミット時にコンパイルエラーが起きないようにすること。

  • branchの変更は、即効でメインライン(trunk)に反映させる

branchに対するメンテナンス期間が長いほど、trunkへのマージ作業が増大し、マージ作業が困難となる。ブランチを作成して分岐したばあい、その変更内容はすばやくメインラインに戻しましょう。

だったと思います。

Mercurialの場合は、分散型なので、だいぶ違う。。。

http://www.selenic.com/mercurial/wiki/index.cgi/JapaneseFAQ
の用語以降の説明に記載があるので、しっかり理解してから再度。。。

http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial-distrib.html
の構成例を見るとまた認識が変わってしまったり。。。

ダメな自分だ。。。orz。。。とりあえず、今日は寝ます。