iOSアプリのgitブランチ運用

iOSアプリはApple審査期間がありリリーススパンがWebに比べて長くなってしまいます。
WebではGitHub Flowgit-flowが使われているようですが、iOSアプリではgit-flowをアレンジした下記に示す運用が良いと思います。

なお、この運用は2,3人での開発を想定しています。

各gitブランチの役割

master

AppStoreで配布中の最新バージョンと同じです。
配布バージョンごとにタグを切ります。

develop

開発ブランチです。
developブランチからIssue毎にfeatureブランチを作成し、開発を進めます。
次期バージョンの要件を満たしたらreleaseブランチを作成します。

feature

developブランチからIssue毎に作成します。
対象Issueの開発が終わるとdevelopブランチにマージします。
developブランチにマージしたタイミングで対象のfeatureブランチは削除します。

release

開発が完了したdevelopブランチから作成します。
Apple審査に出すリリースファイルはreleaseブランチから作成します。
審査を通過した場合、masterブランチにマージします。
審査を通過しなかった場合、releaseブランチ上で修正します。
releaseブランチ上で修正を行った場合はdevelop(必要であればfeature)ブランチにマージします。

hotfix

AppStoreで配布中のバージョンで障害が発生した場合にmasterから作成します。
修正したバージョンがAppStoreで配布可能になったタイミングでmasterとdevelop(必要であればfeature/release)ブランチにマージします。

最後に

今のところこの運用で問題は発生していませんが、この運用を始めてからrejectになったことがなかったり、配布中アプリで障害が発生してhotfixブランチを使ったりしたことがないので、その辺りはこの運用で不都合があるかもしれません。また、開発メンバーが増えた時もそうです。
もっと良い方法があればコメント頂けると幸いです。

参考にしたサイト

blog.hika69.com