releaseブランチを導入するメリットについて考える
背景
masterブランチとdevelopブランチ、
それとfeatureブランチで開発しているケースを考える。
developからfeatureブランチを生やして、featureの開発が終わったらdevelopにマージ。
developにマージしたものをリリースのタイミングでmasterにマージ。
それを本番環境にリリース。
問題
リリースに伴い、コードの細かい修正を行うことがある(リリース作業と呼ぶことにする)。
それらのリリース作業と開発作業が並行して行われるとき困る。
リリース作業内容も開発作業内容もdevelopにマージされるので、
それをmasterにマージしてリリースすると、開発途中のものまでmasterにマージされてしまう。
まだリリースしたくない機能があるのにリリースされてしまったりするよ。
解決策
開発用のブランチとリリース用のブランチを分ける。
リリース作業に入った時、developブランチからreleaseブランチを切って、
それに対してリリース作業のコミットをする。
リリース作業が終了すればmasterにマージする。
(さらにdevelopにもリリース作業の内容を反映させるため、マージする)
メリット
リリース作業中でも、developブランチにプルリク&マージができるので、
作業が滞らずに進む。
リリース作業中の開発内容が本番環境にリリースされることがなく、安全。