プロジェクトをGitLabで管理していて、非常に便利に使っていたのですが。
あるメンバーがmasterブランチにpushしようとしたところ、以下のようなメッセージが出てpushに失敗してしまいました。
GitLab: You are not allowed to push code to protected branches on this project.
どうにかしたいので対策を考えます。
この記事のコンテンツ
pushできなかった原因
今回pushを試みたメンバーはロールがdeveloperでした。
プロジェクトのmasterブランチはデフォルトでは保護されていて、maintainer以上の権限がないとpushが弾かれてしまうようです。
まぁ、masterにいきなりpushするような使い方はアレなんで当たり前といえば当たり前なんですが……。
わざわざブランチを作るまでもない修正とかってあるじゃないですか。
なので、developerの権限でもpushする方法を考えました。
対策
保護されたmasterブランチに権限の足りないユーザーがpushする方法は二つ。といっても、一つは間接的な対策にしかならないのですが……。
おとなしくブランチを作る
一つは新しくブランチを作る方法です。
今回弾かれたのはmasterにいきなりpushするんじゃないぞっていう話なので、おとなしくブランチを作り、そちらでpushしてmasterでマージするのが賢明です。
とはいえやはり一々めんどくさいし、プロジェクトメンバーを信頼しているという場合もあるでしょう。
そんな時には設定を変更してしまう方法もあります。
masterの保護を弱める
もう一つの方法として、masterブランチ自体のA.T.フィールドを中和してしまうこともできます。
プロジェクトの設定→リポジトリ→Protected Branchesで、masterブランチの保護をどこまで適用するかが設定できます。
「マージを許可」「プッシュを許可」のドロップダウンリストで、それぞれの役割を選択することでpushできるようになります。
完全に保護を外してしまいたい時は、右のUnprotectボタンを押下すると保護設定を削除できます。
さいごに
GitLabで社内や仲間内でプロジェクト管理している時、この現象でつまづいた人の役に少しでも立てたら嬉しいです!