GitHubに任せられるものは任せよう
今までgithooksのprepushとかでshell組み込んで対応していたが、github上でできるとのことなので時代の進化に合わせるでがんす。
Require a pull request before merging
にチェックをつけると良い。
早漏なのか以下の記事見てガンガンいこうぜモードで試してみたらmasterにpushできてしまった...
ちょっと下にあるInclude administrators
にチェックつけたらmasterにpushできなくなった。
めでたしでめたし。
Include administrators
にチェックをつけた場合、リポジトリ管理者はローカルからmasterへのpushができず、GitHub 上でのマージもapproveをもらわないとできなくなります。
Include administrators
にチェックをつけなかった場合、リポジトリ管理者はローカルからmasterへのpushもできて、gihub上でのマージもapproveをもらっていなくてもできるようになります。
ここまでは普通ですが最後、番外編。
ポジトリ管理者でも何者であってもローカルからmasterへのpushは絶対できず、gihub上でのマージは管理者であればapproveをもらっていなくてもできるようにしたい。
こんな需要は弊社だけかもしれん。
このケースの場合は、やはりgithookを使うしかないと思います。
githubの設定による制限と、githookによる制限の合わせ技的な感じです。
そもそもmasterに直pushしてしまうような人は管理者として設定すべきではないけど、少なくとも緊急でmasterにマージしたいお!
って要望は少なからずあると思う。
こういう場合でも最低限githubでPR作ってPR経由ということなら管理者であればapproveもらってなくてもmergeしてもいいよ。
って運用にしたかったのです。
流石に管理者なら直pushOKにしてたら、、、横着する人続出する火種になりそうな気がしたからですw
↑こういう逃げ道用意してるからダメなんだよ、って読み返してて思いましたw
緊急だろうがなんだろうが、ちゃんとプロセスを経て業務に取り組むような体制を確立する方が大事ですね。
これは無視してくださいw
まぁでもそんなこともできるよってことで知見にしていただければと思います。
尚、タグはmasterに付与してもpushできるようです。
ファイルに差分発生させてpushしようとすると上記スクショのエラーがでたのでタグだけはOKということがわかりました。
ちょっと寄り道
ちなみに今まで、lib_git-hooks
なるprivateリポジトリを作ってそこにgithookで使うshellを用意して、composer install
をすると、対象の場所にコピーするようなライブラリを作っていた。
あとは必要なリポジトリでcomposerでinstallしてshellを実行すればpre-pushが生成されるような感じです。
もうこんなことしなくて良いが、せっかく作ったってこともあるしリポジトリ削除するのもなぁ...
ということでどんなものだったかは社用個人のgithubリポジトリに譲渡しておくので気になる人は見ていってください。
composerで自作ライブラリ化できればリポジトリ横断して同じようなもの作らなくて良くなるので保守管理のキャパは強くなります。