他のバージョン管理システムと同様 git にも hook が色々存在しますが、役割を適用順に一覧にしたサイトが見当たらなかったので自分用にここに書いておこうと思います。
細かいことはは公式ドキュメントを見てください。
また各々の hook script の書き方自体は、手元の環境の .git/hooks/*.sample
を参考にしてください。
commit関係
見ての通り、コマンドを実行してからの流れ順に書きます。
git commit
-
pre-commit
commit前に起動しコードをチェックするなどで使う。
0以外を返すとcommit中止。--no-verify
で無視。 -
prepare-commit-msg
commit時のデフォルトメッセージ編集用。 エディタが起動し commit msg の入力
-
commit-msg
commit msg が既定のフォーマットに沿っているかなど確認する為に使う。
0以外を返すとcommit中止。--no-verify
で無視。 実際にcommitが実行される
-
post-commit
commit後の通知や自動処理に使う
Eメールワークフロー関係
「Eメールワークフロー」=「gitを使ってpatchのやりとり」です。
私自身はこの機能を使ったことがないため、コマンドの使い方などは間違っている可能性があります。
git am foobar.patch
-
applypatch-msg
patch中の commit msg のチェック用。0以外を返すと中止。 一時的にpatchを適用(commitはまだ)
-
pre-applypatch
patchが適用された物が正常動作するかどうかなどの受け入れテスト用。
0以外を返すと適用中止。 patchを正式に受け入れcommit
-
post-applypatch
apply 後の通知や自動処理に使う
rebase / merge関係
こちらはシンプルなので説明だけ
-
pre-rebase
rebase する前にチェックして rebase を中断させるなどで使う。
0以外を返すとrebase中止。 -
post-rebase
事後の告知とか自動実行とか。 -
post-merge
同じく merge 版の事後の告知とか自動実行とか。こちらはpreはない。
サーバサイドフック
外部から push されたときに動くスクリプトです
git push your_server master
-
pre-receive
push を受けた際の最初に実行される。主に受け入れテスト用。
0以外を返すと受け入れ中止。 -
update
push を受けた際ブランチ毎に実行される。主に受け入れテスト用。
0以外を返すと受け入れ中止。 Received!
-
post-update
push を受けた際ブランチ毎に実行される。多分メッセージ表示とか用。 -
post-receive
push を受けた際の最後に実行される。MLに告知を流したり色々処理したり。