社内で、Git-flowもどきフローでGerritによるコードレビューを実施しているので、整理を兼ねてメモする
前提
内容について
記事で書くこと
- 開発時のGerritとの連携方針
記事で書かないこと
- Gerritとの連携の具体的な操作方法
- Git-flowの説明
開発環境
- バージョン管理:Gerrit v3.0.0 (Git)
- バージョン管理のGUIクライアント:SourceTree
- ブランチの運用方法:Git-flowもどき
- Git-flowから_release_ブランチを除いたもの
- 開発タスクごとに作業ブランチを切り、_develop_ブランチにマージしていく、という流れとなる
実施手順
コードライティング
- ローカルで_develop_ブランチをPULL
- ローカルにリポジトリをクローンしていない場合は、Change-Idのフックによる自動追加を含むコマンドを用いてクローンする
- ローカルで_develop_ブランチから作業ブランチを切り、作業開始
- バージョンやビルド番号を上げるなど作業ブランチを切るまでもない細かい作業は、直接_develop_ブランチ上で実施する
- 大きなタスクの場合は、バックアップとこまめな進捗共有のため、**WIP(Work In Progress: 作業中)**オプションをつけてGerritにPUSH1しておく
- 作業期間が長い場合は、developブランチを適宜フェッチし、更新がある場合は作業ブランチを_develop_へリベースする
コードレビュー
- 作業が完了したら、Gerritのコードレビュー用ブランチにPUSH2し、レビュアーを割り当てる
- WIPとして作業していた場合は、Web上でコードレビューを開始ボタンを押下するか、コードレビュー開始オプションをつけてGerritにPUSH3する
- コードレビューで指摘を受けた場合は、作業ブランチ内のコミットを修正し、再PUSHし、コードレビューを再開する
- コミットメッセージ中のChange-Idは変更しないようにする
- コードレビューが完了したら、最後に承認した人にGerritのWeb上でsubmitしてもらう
- これにより、リモートリポジトリへ変更がコミットされる
マージコードレビュー
- _develop_ブランチにfast-forwardなしでマージ
- この際、_develop_ブランチにチェックアウトした状態で、SourceTreeの画面上部に表示されているマージボタンを押下し、マージされていないコミット一覧画面を利用してマージすると、マージ漏れなどの事故が防ぎやすくなる
- マージによりコンフリクトが発生した場合は適宜修正する
- developブランチをGerritのコードレビュー用ブランチにPUSHする
- コンフリクトが発生しなかった場合は、自分でコードレビューを通しsubmitする
- コンフリクトが発生して修正した場合は、前節のようにコードレビューを実施する