リポジトリを守る仕組み
「うっかり」で本番が壊れないのは、なぜでしょうか
確認漏れを止める仕組みと、その限界を見てみましょう。
01リスク
確認せず合流しそう
確認漏れが心配急いでいると、確認を忘れたまま変更を入れてしまいそうです。
02対策
検査を手順に組み込む
保護と検査を組み合わせる保護設定とレビュー記録の検査を用意し、決めた手順で合流します。
03効果
未確認で止まった
記録の不足を検出点検した版の記録がなく、手順が止まりました。確認漏れに気づけました。
04残る注意
回避できる場合もある
強制できる範囲に限り設定によっては画面から合流できてしまいます。担当者と手順を守ります。
守りは何層あるのか
ファイルと履歴の保管場所(リポジトリ)では、確認していない変更の合流や、履歴の強制的な書き換えを防ぐ対策を重ねます。それぞれが担当する範囲は違います。対策があるから無条件に安全とは考えず、どの操作をどの仕組みが止めるかを確かめます。
気になる層や右側の範囲注釈をクリックすると、その内容の説明がここに表示されます。
忘れを止める層が重なる — それぞれの守備範囲を確認する
この図をテキストで読む
積層図「本番を守る5つの層」。5 つの層を全幅の帯で縦に積む(上から順・最後の層が土台)。 【層】(上から順) - 本番承認・前進ガード(手順とワークフローの制御) | 含まれるもの: /git release / 本番反映の承認 / 順序ガード - /git land の運用ゲート(合流コマンドによる自動検査) | 含まれるもの: レビュー確認 / CI完了待ち / 統合判断 - 〔焦点〕review-gate(CI検証)(レビュー証跡と規模の機械的検証) | 含まれるもの: レビューの記録検証 / 最新本流確認 / 300ファイル上限 - branch protection(main の保護)(GitHubサーバーによるルール強制) | 含まれるもの: PR必須 / 強制プッシュ禁止 / ブランチ削除禁止 - trunk-based(開発の土台)(本流1本のシンプルな運用設計)(土台) | 含まれるもの: mainブランチ単一 / 短命な作業ブランチ / 早期の統合 【範囲】 - 運用の手順が強制: 本番承認・前進ガード 〜 /git land の運用ゲート - サーバー側(GitHub)が強制: review-gate(CI検証) 〜 branch protection(main の保護) 【結論】忘れを止める層が重なる — それぞれの守備範囲を確認する
strict と advisory は、何が違うのか
5slab の設定用の道具 repo-guard は、GitHub で使える保護機能を調べて設定します。GitHub 自身が合流を制限する strict と、決めた手順で検査する advisory があります。契約プランや公開範囲で使える機能が異なります。設定の不足や状態が不明な場合は、弱い方式に切り替えて続行せず止めます。
各セルをクリックすると、その意味や詳しい説明がここに表示されます。
GitHub が止められないぶんは、/git land の手順が受け持つ
この図をテキストで読む
比較表「strict と advisory の違い」。2列 × 4行。 【列】 1. strict(厳格保護)(GitHubが直接阻止) 2. advisory(助言保護)(運用手順で担保) 【比較】(観点ごとに) ■ いつ適用されるか - strict(厳格保護): 保護機能が使えるとき / 公開リポや有料プラン - advisory(助言保護): プラン制限のとき / 無料プランの非公開リポ(403) ■ 何が止めるか - strict(厳格保護): GitHubサーバー / 画面のマージボタンも無効化 - advisory(助言保護): /git land の手順 / 合流コマンドが判定 ■ review-gate の位置 - strict(厳格保護): 必須チェック(required) / 赤ならマージ不可 - advisory(助言保護): 通常のチェック / 赤でもGitHubは止めない ■ /git land の動作 - strict(厳格保護): スキップ不可で厳格合流 / チェック完了を自動待機 - advisory(助言保護): 検査待ちと統合判断 / 軽量変更のみ明示スキップ可 【観点】 - advisoryの役割: advisory(助言保護)
advisory では、手順が受け持つ
advisory では、自動検査が不合格でも GitHub 画面から合流できてしまいます。担当者は /git land を使い、手順の中で検査を確認します。strict と同じ強制力があるわけではありません。管理者が保護を回避できる設定もあるため、直接の変更を通常の手順として使わないことが大切です。
review-gate は何を見ているのか
review-gate は、レビューした版と、合流しようとしている版が同じかを検査します。たとえばレビュー後にコードが変わっていたら、古い結果で進めず再確認を求めます。これはレビュー漏れを減らすための検査で、コードをもう一度点検する処理ではありません。
レビューの記録や検査設定を、編集権限のある人が書き換える可能性は残ります。管理者は招待する相手と権限を確かめ、不要になったアクセスを外します。依頼者は、知らない人が追加されていたり、検査を飛ばすよう求められたりしたら、担当者に確認しましょう。
記録は、改ざんを防ぐ署名ではありません
この検査は確認忘れを減らす仕組みです。検査設定や記録そのものの改ざんまで防ぐには、編集権限の分離など別の対策が必要です。
押さえておきたい用語
- branch protection
- review-gate
- repo-guard
- strict
- advisory
- レビューの記録