はじめに
私が所属する開発チームでは、一つのリポジトリ内に複数製品が同居しており、それら製品の「企画→開発→リリース」の期間が同時期に並列して走る場合がある
その状況で運用しているフローを整理を兼ねて記す
概観
以下のように、Git-flowから_release_ブランチを除き、かつ**_develop_ブランチが複数ある**ような運用フローとなっている
詳細
基本的なフロー
開発
- マイルストーンごとに_develop_ブランチ(開発本線)を切る
- 開発タスクごとに作業ブランチを切り、コードレビュー完了後、_develop_ブランチにマージする
検証開始・再開前
- ビルド番号をインクリメントする
- _develop_ブランチ上で直接コミットする
- 検証時に**_develop_ブランチが_master_ブランチに後れを取っていないか**を確認し、ある場合は差分をマージする
- 他の進行中の_develop_ブランチや、緊急リリース用の_hot fix_ブランチを確認し、それらをマージする
検証
- _develop_ブランチの最新コミット上でビルドし、バイナリを検証チームに渡す
検証時の不具合対応
- 既に存在する作業ブランチで追加修正する場合、以下を確認
- 作業ブランチの分岐元コミットが古く、_develop_ブランチにマージする際コンフリクトが起きる懸念がある場合は、_develop_ブランチを作業ブランチにマージした後で作業する
- 修正してコードレビュー完了後、_develop_ブランチにマージする
- 「検証開始・再開前」の項に戻り、再度検証開始
検証完了後
- _develop_ブランチを_master_ブランチにマージする
- タグを打つ
- 他に進行中の_develop_ブランチが存在する場合は、そのブランチにもマージする
- 作業ブランチを削除する
例外的なフロー
緊急リリース対応
- _master_から直接_hot fix_ブランチを切り、そのブランチ上でコードレビュー・検証を実施する
- 検証完了後、_hot fix_ブランチを_master_ブランチにマージする
- その後、進行中の_develop_ブランチが存在する場合は、そのブランチにもマージする