- 履歴一覧
- 現在との差分 を表示
- ソース を表示
- 履歴 を表示
- ソースコード管理実践/ブランチ作戦 へ行く。
- 1 (2013-08-08 (木) 02:49:36)
- 2 (2013-08-08 (木) 03:03:42)
- 3 (2013-08-17 (土) 09:07:15)
- 4 (2014-06-10 (火) 07:31:27)
- 追加された行はこの色です。
- 削除された行はこの色です。
[[../]] * ブランチ作戦 [#hf5beef7] 主だった作戦は次の3つ。 主だった作戦は次の3つです。 + すべての集約先 trunk + リリースに向けたリリースブランチ + 開発初動に向けたタスクブランチ ** すべての集約先 trunk [#k67c8ebe] ** 1. すべての集約先 trunk [#k67c8ebe] すべてのコードは最終的に ''trunk'' に集約させます。すべてのブランチは trunk からコピーし trunk に還ります。基本的にはブランチからブランチをコピーすることはしません。このこと、つまりすべての変更を必ず trunk にマージすることをルール化することで、バグフィックスやテーマ開発の適用漏れを防ぎます。 - すべてのブランチのコピー元 - すべてのブランチのマージ先 - trunk は永続する +--[branche]--+ | | --[trunk]--+-----+-------+-----+--> | | +--[branche]--+ ** リリースに向けたリリースブランチ [#qac72702] ** 2. リリースに向けたリリースブランチ [#qac72702] リリースに向けたコードは ''リリースブランチ'' で安定化させます。およそ ST または UAT のフェーズ開始時点でそのリリースに対応するリリースブランチを trunk からコピーします。このリリースブランチからビルドするパッケージで ST や UAT を経て、このリリースブランチが安定したと言います。リリースはこのままこのリリースブランチからビルドします。リリース後、軽微なバグフィックスを入れたい場合はリリースブランチに変更を入れてこのリリースブランチからビルドして再リリースします。 ST や UAT で生じた変更とリリース後のバグフィックスはすべて trunk にマージしなければなりません。従って、次のテーマが待っているのでなければリリースブランチをコピ-するタイミングは遅いほどよいです。コピー後の変更を trunk にマージする手間が省けます。 - (ST, UAT, )リリースのためのブランチ - リリース後すべての変更を trunk にマージ(少ない想定) - 次のリリース後破棄 !: bug fix x: end point release release release ^ ^ ^ | | | +--[release]--!--++---!---++-------------------->x| | | | +--[release]--++--> | | | | | --[trunk]--+-----------------+--------+--------+--------------+--> ** 開発初動に向けたタスクブランチ [#jead6bef] ** 3. 開発初動に向けたタスクブランチ [#jead6bef] UT までの各テーマ開発は ''タスクブランチ'' で安定化させます。開発開始時点でそのテーマに対応するタスクブランチを turnk からコピーします。このタスクブランチからビルドするパッケージで UT を経て、このタスクブランチが安定したと言います。IT はこのタスクブランチの変更分を trunk にマージした後 trunk からビルドするパッケージで実施します。これは、複数テーマを並行して開発する際に、各テーマごとのコードラインではなく、合わさったコードライン(つまりマージ先の turnk)が安定していると言うためです。IT 以降リリースブランチがコピーされるまでの変更は trunk に入れます。 - 各テーマ開発のためのブランチ - 開発・UT後すべての変更を trunk にマージ - trunk にマージ後破棄 +--[release]--> | --[trunk]--+--+----------++-------+-------------> | | || ^ | +--[task]--+| end of IT | | +--[task]------+ ^ end of UT * この作戦における各テストフェーズの意義 [#r3cc328f] この作戦を採り各テストフェーズ(UT, IT, ST+UAT)に次の意義をもたせます。 :UT|各開発テーマで満たすべき機能の実装が完了したことを検証する :IT|(次のリリースに向けて)各開発テーマで満たすべき機能が他の開発テーマの機能やバグフィックスと同時に正しく※動作することを検証する :IT|(次のリリースに向けて)各開発テーマで満たすべき機能が他の開発テーマの機能やバグフィックスと同時に正しく((「同時に正しく」とは、こちらで作成したデータがあちらの場面でというようなシナリオテストにおいて正しく、のこと))動作することを検証する :ST+UAT|次のリリースに至るコードライン(からビルドするパッケージ)が満たすべき機能を備えていることを検証する '''※ 「同時に正しく」とは、こちらで作成したデータがあちらの場面でというようなシナリオテストにおいて正しく、のこと''' +===(ST+UAT)===> | --[trunk]--+----------+===(IT)===+--------------> | | +===(UT)===+