GitHubFlowの内容と改定
本実験では前提知識としてGitの運用と運用フローであるGithubFlowの知識が必要となる。 Gitの運用については利用経験のある人物を被験者として選択しているためここでは省略する。 GitHubFlowについての知識および我々の開発物で測定するための改定内容を以下に示す。
Rule 1: masterブランチのものは何であれデプロイ可能である
第3者にレビューされたもののみがmasterブランチにコミットされるべきである
Rule 1': 初期コミット以外にmasterブランチに直接コミットしてはいけない
初期コミット以外は、ブランチを作成してから開発を進め、レビューが適切に行われたもののみがマージされるべきである デプロイ可能かについては評価の対象としない
守れている
違反している
Rule 2: ブランチは説明的な名前のものをmasterブランチから作成する
デプロイ可能なmasterブランチのみからブランチを切ることを強制することで、バグなどの影響を最小限にする 機能ごとにその機能を表した分かりやすいブランチの名前をつけることにより、どのブランチで何を行っているかを容易に把握できる
Rule 2': すべてのブランチがmasterブランチから作られている
説明的な名前かどうかは評価の対象としない
守れている
違反している
Rule 3:サーバー上にブランチを定期的にプッシュする
リモートリポジトリの内容が常に最新の状態であること
Rule 3':ローカルリポジトリ上に作成したブランチに対するコミットをリモートリポジトリに定期的にプッシュする
定期的という部分は事前に設定するものとする 今回の実験では想定時間を30分以内としている
Rule 4:フィードバックやmasterブランチへのマージの際にはプルリクエストを作成する
Rule 4':masterブランチにマージを行う際には必ずプルリクエストを作成する
フィードバックの際のプルリクエストについては、評価の対象にしない
Rule 5: masterブランチへのマージはプルリクエストがレビューされた場合のみ行う
第3者にレビューされ、デプロイ可能であることを保証されたもののみがmasterブランチに存在するべきである
Rule 5’:プルリクエストの内容をmasterブランチにマージする際には必ず第3者によるレビューを受ける
レビューの内容は評価しない
rule6 レビューのあとは直ちにデプロイする
レビューが行われ、ブランチがmasterにマージされたならばただちにデプロイを行う rule6の検出は現状では不可能なため今回は除外する
GitHub Flow演習におけるルール遵守状況の具体的な評価
R1’: 初期コミット以外にmasterブランチに直接コミットしてはいけない R2’: すべてのブランチがmasterブランチから作られている R3’: ローカルリポジトリ上に作成したブランチに対するコミットをリモートリポジトリに定期的にプッシュする R4’: masterブランチにマージを行う際には必ずプルリクエストを作成する R5’:プルリクエストの内容をmasterブランチにマージする際には必ず第3者によるレビューを受ける
違反率の算出方法
rule1~rule4
masterブランチに対する違反マージコミット/masterブランチに対する総マージコミット
rule5
masterブランチに対する違反プルリクエスト/masterブランチに対する総プルリクエスト