iOSアプリのgitブランチ運用
iOSアプリはApple審査期間がありリリーススパンがWebに比べて長くなってしまいます。
WebではGitHub Flowやgit-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ブランチを使ったりしたことがないので、その辺りはこの運用で不都合があるかもしれません。また、開発メンバーが増えた時もそうです。
もっと良い方法があればコメント頂けると幸いです。