Gitでmasterにcommitすると警告するhook作った

f:id:hkdnet:20151005083948j:plain

動機

友達がいないので 気ままに開発したいからおひとりさまでソーシャルコーディングに励んでいるわけだけれども、たとえ一人だろうとGitHubなのでブランチ切ってPR作ってマージしてってのをやっています。
簡易GitHub Flowみたいなやつだと思います。たぶん。

Github-flow - GitHub Flow 図解 by @tbpgr on @Qiita

でも、Git使いつつ開発してるとあるあるだと思うんですけど、うっかりmasterブランチにaddしたりしちゃうわけです。
そしてめんどいからいいやっていってそのままpushしちゃうわけです。だって自分ひとりだもの。
これはいけないなーと思って対策を打とうと思いました。

というわけでGitHookの機能を使って警告を出すようにしてみました。
masterで何かしたいときは--no-verifyオプションが必要です。(それもどーなの、という感じですが)

コード

#!/usr/bin/env ruby
if `git branch`.chomp.split("\n").find { |e| e == '* master' }
  puts 'ここはmasterブランチ。許可のないやつは通せないぜ > 乂・д・)'
  exit false
end

gistにも公開しています

サンプル

master時

f:id:hkdnet:20151005084126p:plain

別ブランチ時

f:id:hkdnet:20151005084130p:plain

課題

まだあんまり使ってないけど。

  • ほんとはy/nとかでインタラクティブにcommitしてもよいか確認したかったけど、gets使っても入力待ちにならなかったので断念
  • 何のオプションが設定されたかスクリプト内から確認できるならそれでやりたい(ちゃんとわかってないけど)