未分類
概要
Rulesetsは、リポジトリのブランチやタグに対する保護ルールを設定するGitHubの機能である。主にチーム開発で使用する。
表示されたメッセージ
GitHubのSettings > Rulesページで以下のメッセージが表示された:
Protect your most important branches Rulesets define whether collaborators can delete or force push and set requirements for any pushes, such as passing status checks or a linear commit history. Your rulesets won't be enforced on this private repository until you move to GitHub Team organization account.
意味: プライベートリポジトリでRulesetsを有効にするにはGitHub Teamプラン(有料)が必要。
利用可能なプラン
| プラン | パブリックリポジトリ | プライベートリポジトリ |
|---|---|---|
| GitHub Free | 利用可能 | 不可 |
| GitHub Pro | 利用可能 | 不可 |
| GitHub Team | 利用可能 | 利用可能 |
| GitHub Enterprise | 利用可能 | 利用可能 |
主な機能
ブランチ保護
- force push禁止 -
git push --forceで履歴を壊すのを防ぐ - ブランチ削除禁止 - mainブランチの誤削除を防ぐ
- レビュー必須化 - PRにレビュー承認がないとマージできない
- ステータスチェック必須 - CIテストが通らないとマージできない
- コミット署名必須 - GPG署名されたコミットのみ許可
Branch Protection Rulesとの違い
| 機能 | Branch Protection Rules | Rulesets |
|---|---|---|
| 複数ルールの同時適用 | 不可 | 可能(競合は最も制限的なものが適用) |
| 有効/無効の切り替え | ルール削除が必要 | ステータス変更のみでOK |
| 組織全体への適用 | 不可 | 可能 |
| ルールの可視性 | 管理者のみ | 読み取り権限があれば誰でも確認可能 |
個人開発では不要
判断基準
| シナリオ | Rulesets必要? |
|---|---|
| 個人で1人開発 | 不要 |
| チームで複数人開発 | あると便利 |
| OSS(複数コントリビューター) | 推奨 |
理由
チーム開発の場合:
Aさん → mainに直接push → Rulesetsでブロック
Bさん → force push → Rulesetsでブロック
個人開発の場合:
自分 → 何でもできる → ルール設定しても自分を縛るだけ
結論
- 個人リポジトリでは設定不要
- GitHubが新機能をプロモーションしているだけ
- 将来チームで開発することになったら検討すれば十分