この記事はKDDI Engineer&Designer Advent Calendar 2022の8日目の記事です。
知らぬ間に増殖するブランチ
チームで開発を進めていくうちに無駄なブランチがgithubに増殖してしまうことってありませんか?
僕が参加するプロジェクトでも気づけばブランチが500以上に増えていました。
500以上のブランチのうちmainやdevelop以外のブランチを見てみると開発の仕掛中で終わりになったブランチやPRがcloseされてそのまま残り続けているブランチもいくつかはあったのですが、1番多かったのはマージ後も削除されずに残り続けているブランチでした。
そこでdevelopブランチにマージしたブランチを自動的に削除する設定をいれましたので、今回はその設定をご紹介します!
設定はたったの2つ!ブランチを自動的に削除する
結論から言います。以下の2つを設定するだけです。
- 削除されたくないブランチをプロテクトする
- ブランチの自動削除の設定をONにする
githubにはマージしたブランチを自動的に削除する設定が予め設けられています。
リポジトリのSettingsからAutomatically delete head branches
のチェックを入れると、プルリクエストがマージされた後、head ブランチが自動的に削除されます。
しかしこのままでは main <- stage のようなマージを行った際にstageブランチが削除されてしまうため、削除されたくないブランチにはプロテクトを設定します。
どうやらプロテクトと自動削除ではプロテクトが優先されるらしく、ブランチをマージした際もプロテクトされているブランチは削除されずに残り続けてくれます。
ブランチのプロテクトはSettings→branches→Branch protection rulesでプロテクトしたいブランチの名前を入力するだけで簡単に設定できます。
また、relese/**
のようにfnmatch 構文で指定することで規則的なブランチに対してもルールが設定できます。
一度消しても大丈夫。魔法のrestore branch
え、これだけ??なんだか削除しちゃいけないブランチも削除されそうで怖い
でも大丈夫です。ブランチが削除されてもrestore branchをすればブランチが復活します。
最後に
これでもう不要なブランチが増え続けなくなりました!
あとは500以上ある不要なブランチを削除すれば、年末の大掃除終了です!
では、それはどうやるのか、
簡単です。ひたすら削除ボタンを押し続けるのみ
\_ヘ(Д`*)ポチポチポチ.......................................................
それでは良いお年を!!