gitのhookを使ってみた

fukajun

背景

ruby 1.9から次のようなhashは


  { :a => 1, :b => 2 }

こんな感じにより、一般的なハッシュぽく書ける


  { :a: 1, b: 2 }

みんなもうとっくに新しい書き方に移行したよね?

でもついつい癖で 古い書き方をしてしまって、それをgitにコミットしてしまう

目的

自分の癖のために、コーディング規約に沿ってない書き方のコードでプルリクしてしまうことを防ぎたい

どうしたか?

git フックを使ってみました

git hook?

applypatch-msg.sample    post-update.sample
pre-commit.sample    prepare-commit-msg.sample
commit-msg.sample  pre-applypatch.sample
pre-rebase.sample     update.sample

いろいろなhookのタイミング

https://www.kernel.org/pub/software/scm/git/docs/githooks.html

applypatch-msg pre-applypatch post-applypatch pre-commit prepare-commit-msg commit-msg post-commit pre-rebase post-checkout post-merge pre-receive update post-receive post-update pre-auto-gc post-rewrite_

作り方

実際に作ってみた

古いスタイルのハッシュを書いていたらコミット 中止

#!/bin/sh
# .git/hooks/pre-commit
git diff --cached | grep ":[^ ]*  *=>  *:[^ ]*"
result=$?
ret=0
if [ $result -eq 0 ]; then
  echo "!!!!!!!!Include old type hash statement!!!!!!!"
  ret=1
fi
exit $ret

デモ

ここでコマンドラインで動かしてデモ

まとめ