gem_rbs_collection で code owners機能を有効にした。 これでgemの単位でRBSを書くメンテナを増やせるようになった。
次のような設定がされている。
- gemの単位で権限を与えたい人を ruby/gem_rbs_collection リポジトリに outside collaboratorとしてwrite権限で招待する
- collaborator はこのリポジトリの全てを読み書きできるようになる
- そのため、code owners 機能を使って触れる範囲を狭める必要がある
main
ブランチにbranch protectionを設定する- 1 approval 以上を必須にする
- これで collaborator が勝手にPRをマージできないようになる
- code ownerによるapproveを必須にする
- これでcode ownerは自分がownerのファイルへのPRをマージできるようになる
- 1 approval 以上を必須にする
CODEOWNERS
ファイルに、ファイルの対応を書く- 各gemにcollaboratorをassignする
- ファイルの先頭で
* @pocke
のように全てのファイルに対するcode ownerを設定する- これを設定しないと、code ownerが明示的に指定されていないファイルへのPRをcollaboratorがマージできてしまう
code owners機能は便利なような、微妙に使いづらいような。 collaboratorの権限はある程度制限できている(と思う)のだけど、私など元からいるメンテナの権限も同様に制限されてしまってちょっとやりづらい。
ただ、リポジトリのadmin権限があれば強権マージができるので、たぶん強権マージを乱発する体制になる。
たとえば* @pocke
が効いているファイルへのPRは私がapproveしないとマージできないのだけど、私自身で開いたPRは自分でapproveできないので、強権マージできないと詰む。
collaboratorの権限に関してもちょっと微妙なところがある。collaboratorも自身が開いたPRを自身でapproveできないので、code ownerになっていても他者のPRをマージできるだけで自身のPRはマージできない。 あと、issueの権限は完全にオープンになっていると思うので、全然関係ないissueを閉じれたりしてしまいそう。issueに関してはこれはroleの権限を調整すればなんとかできるような気もしている。