zzzkan.me

GitHubのリポジトリルールでブランチ名を強制する

  • 2min
人が機械に強制されてブランチを作成している画像

たとえば機能追加の場合はfeat/*のように、ブランチ名に対して命名規則が設けられている場合があります。私はこういう類の規則はすぐに忘れ去る傾向がある(覚えていたくないとも言う)ので、可能な限り仕組みで強制しておいて欲しいと思ってます。

でこれまで GitHub においてブランチに対してルールを設定するならBranch Protection Rules(ブランチ保護ルール)が一般的だったかなと思います。ただ、ここにはブランチ名を強制するようなルールはたしかなかったと思います。Lock branch は近いようにも思うのですがブランチの作成はできるので少し違う…。

Repository Rules(リポジトリルール)

わりと最近、 Branch Protection Rules の後継としてRepository Rules(リポジトリルール)というのが使えるようになりました。 この Repository Rules は、後継ということもあって Branch Protection Rules に比べより柔軟なルール設定が可能になっています。

ブランチ名を強制してみる

今回は命名規則として mainfeat/*release/* のみが許可されているものとします。

リポジトリルールでブランチ名を強制する設定例

やっていることは超簡単で、mainfeat/*release/*を除いたすべてのブランチ名についてブランチ作成を制限するRestrict creationsを設定しているだけです。ブランチの指定にはfnmatch 構文を使用します。このとき、区切り文字 / がワイルドカード * とマッチしない点はちょっと注意です。

このルールを設定したうえで許可していないブランチ名でブランチを作成しようとすると以下のようなエラーになり、ちゃんとブランチの作成が制限されます。

ブランチ作成の制限

Repository Rules のおかげでブランチ名を強制するルールが超簡単に作れるようになりました。

(追記)GitHub Enterprise の場合

GitHub Enterprise ならもっと簡単でMetadata restrictionsでブランチ名を制限できるようです。これなんですが、他のプランでは今のところ使えないようです(手元が Free プランなので試せない…)。

zzzkan
zzzkan

アルフォートは水色派です。

© 2023 zzzkan, Built with Gatsby