branch protection とは何か?
branch protection とは、review の要求や merge 前のチェック合格のように、変更が重要な branch にどう到達できるかを制限するルールの集合です。
main branch は誰もが依存するものなので、ほとんどのチームはそれをロックダウンします。branch protection ルールはチームの基準を自動的に強制し、誰が push していようと、基準を満たさない限り何も main に到達しないようにします。
何であるか
branch protection は、通常 main の branch 上の構成であり、特定の条件が満たされない限り変更をブロックします。全員がルールを覚えていることに頼る代わりに、プラットフォームがそれを強制します。準拠していない変更の merge を単に拒否するのです。
一般的な保護
- pull request を要求する; branch への直接 push は不可。
- 1 つ以上の承認 review を要求する。
- merge 前に status check (CI) の合格を要求する。
- branch が main と最新であることを要求する。
- push できる人を制限し、force-push を禁止する。
例
あるリポジトリは main を保護し、すべての変更が CI 合格済みのレビュー済み pull request を通らねばならないようにします。急いでいる開発者が main へ直接 push しようとしてブロックされます。彼らは pull request を開き、review を得て、チェックを合格させねばなりません。まさにチームが望む安全性です。
なぜ main を健全に保つか
継続的インテグレーションの要点は、常に既知の良好な状態にある main branch です。branch protection はそれを譲れないものにします。レビューされていない、あるいはテストされていないコードは物理的に着地できません。これは main の上に構築するすべての開発者を守り、継続的デリバリを支えます。
status check との連携
branch protection は status check に力を与えるものです。必須の status check は、merge ボタンが機能する前に CI が成功を報告せねばならないことを意味します。必須の review と組み合わせると、機械(テストが合格する)と人間(誰かが承認した)の両方が了承したことを保証します。
重要なポイント
- branch protection は変更が branch に到達する前にルールを強制する。
- 一般的なルールは review と CI チェックの合格を要求する。
- main branch を常に健全で信頼できる状態に保つ。