diary

I like Hatena Star with a text selection.

2022-02-03

github.com

github.com

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をマージできるようになる
  • 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の権限を調整すればなんとかできるような気もしている。