弊社、日本CAWでの開発フローはGitHub Flowをベースにしてpull requestを活用したスタイルを採用しています。
最近、有志のチームでサクっと行きたいラーメン屋さんを見つけることができるアプリ「めんこれ」というのを開発しているのですが、そろそろ開発フローを整備しようという話になったので、今まではクローズドでやってましたが、公開しちゃおうと思ったわけです。
普段はdevelopブランチをメインブランチにしているんですが、スピード感あるデプロイサイクルにするためにmasterブランチをメインにします。
#実装者のフロー
GitHub Flowについてはこちらの日本語訳を参照のこと。
https://gist.github.com/Gab-km/3705015
GitHubのissueで開発タスクを管理していますので、開発対象のリポジトリで自分にAssignされているタスクを確認します。
下記の#58のissueに着手する例を示します(GUIツールは対応する操作を)。
ローカルマシンでmasterから作業ブランチを作成し、そのブランチ上で実装します。
# カレントブランチをmasterに移動
$ git checkout master
# リモートからmasterブランチを取得し最新にする
$ git pull origin master
# masterブランチから作業ブランチを派生する
$ git checkout -b issue-58
実装が終わったらブランチにソースコードをコミットします。作業中コミットが複数回発生しても問題ありません。
# 変更をindexに追加
$ git add -A
# 変更をコミット
# 必ずissue番号を含めて下さい(GitHub上で参照しやすくなるので)。
$ git commit -m "#58 広告設置
作業ブランチをpushしてpull requestを作成します。
$ git push origin issue-58
New pull request
自分がpushした作業ブランチを選択します。左がmasterブランチ、右が自分が作成したブランチになっていることを確認し、問題なければCreate pull requestします。
特記事項などあれば、 下記画面で入力してCreate pull requestしたら完了です。
#WIP PRについて
実装の仕方や、コードの設計など、コードに紐づく議論をしやすくするために、WIP PR(Work In Progress Pull Request)という手法を使います。
参照
http://www.slideshare.net/asuenami/wip-pr
下記のように、pull request作成時に頭に[WIP]をいれてください。
この名前がついたpull requestはマージされず、議論や確認のために参照されます。WIP PR作成者は議論や確認が済んだらClose pull requestしてください。
#レビュワーについて
pull request画面で未消化のpull requestを確認します。
基本はissue作成者が対象のpull requestをマージしますが、全てのメンバがpull requestをマージする権限を持つので、可能なものはマージお願いします。ただし自分のpull requestは必ず他メンバにマージしてもらってください。
またWIP PRの回答可能なものには回答をお願いします。
#めんこれ渋谷
何気なく「あー今日ラーメン食べたいなー」ってときにサクッと行きたいラーメン屋をみつけられるアプリ「めんこれ渋谷」現在Android版のみ公開されてます!