君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

releaseブランチを導入するメリットについて考える

f:id:karoten512:20181211132007p:plain

背景

masterブランチとdevelopブランチ、

それとfeatureブランチで開発しているケースを考える。

developからfeatureブランチを生やして、featureの開発が終わったらdevelopにマージ。

developにマージしたものをリリースのタイミングでmasterにマージ。

それを本番環境にリリース。

問題

リリースに伴い、コードの細かい修正を行うことがある(リリース作業と呼ぶことにする)。

それらのリリース作業と開発作業が並行して行われるとき困る。

リリース作業内容も開発作業内容もdevelopにマージされるので、

それをmasterにマージしてリリースすると、開発途中のものまでmasterにマージされてしまう。

まだリリースしたくない機能があるのにリリースされてしまったりするよ。

解決策

開発用のブランチとリリース用のブランチを分ける。

リリース作業に入った時、developブランチからreleaseブランチを切って、

それに対してリリース作業のコミットをする。

リリース作業が終了すればmasterにマージする。

(さらにdevelopにもリリース作業の内容を反映させるため、マージする)

メリット

リリース作業中でも、developブランチにプルリク&マージができるので、

作業が滞らずに進む。

リリース作業中の開発内容が本番環境にリリースされることがなく、安全。