zzzkan.me

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

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

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

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

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

わりと最近、 Branch Protection Rules の後継としてRepository Rules(リポジトリルール)というのが使えるようになりました。

この Repository Rules は、後継ということもあって Branch Protection Rules に比べより柔軟なルール設定が可能になっています。たとえば、Branch Protection Rules ではルールを適用するブランチパターンのみ指定できたのですが、Repository Rules ではルールの適用外とするパターンの指定も可能となっています。また、Restrict creations というブランチ作成を制限するルールも追加されています。

これらを組み合わせることでブランチ名を強制するルールが作れそうです。

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

ということで設定してみます。今回は命名規則として mainfeat/*release/* のみが許可されているものとします。設定は以下のようになります。

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

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

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

ブランチ作成の制限

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

zzzkan
zzzkan

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

© 2023 zzzkan, Built with Gatsby