254
264

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Git hooks まとめ

Last updated at Posted at 2012-12-26

他のバージョン管理システムと同様 git にも hook が色々存在しますが、役割を適用順に一覧にしたサイトが見当たらなかったので自分用にここに書いておこうと思います。

細かいことはは公式ドキュメントを見てください。
また各々の hook script の書き方自体は、手元の環境の .git/hooks/*.sample を参考にしてください。

commit関係

見ての通り、コマンドを実行してからの流れ順に書きます。

  1. git commit
  2. pre-commit
     commit前に起動しコードをチェックするなどで使う。
     0以外を返すとcommit中止。--no-verifyで無視。
  3. prepare-commit-msg
     commit時のデフォルトメッセージ編集用。
  4. エディタが起動し commit msg の入力
  5. commit-msg
     commit msg が既定のフォーマットに沿っているかなど確認する為に使う。
     0以外を返すとcommit中止。--no-verifyで無視。
  6. 実際にcommitが実行される
  7. post-commit
     commit後の通知や自動処理に使う

Eメールワークフロー関係

「Eメールワークフロー」=「gitを使ってpatchのやりとり」です。
私自身はこの機能を使ったことがないため、コマンドの使い方などは間違っている可能性があります。

  1. git am foobar.patch
  2. applypatch-msg
     patch中の commit msg のチェック用。0以外を返すと中止。
  3. 一時的にpatchを適用(commitはまだ)
  4. pre-applypatch
     patchが適用された物が正常動作するかどうかなどの受け入れテスト用。
     0以外を返すと適用中止。
  5. patchを正式に受け入れcommit
  6. post-applypatch
     apply 後の通知や自動処理に使う

rebase / merge関係

こちらはシンプルなので説明だけ

  • pre-rebase
     rebase する前にチェックして rebase を中断させるなどで使う。
     0以外を返すとrebase中止。
  • post-rebase
     事後の告知とか自動実行とか。
  • post-merge
     同じく merge 版の事後の告知とか自動実行とか。こちらはpreはない。

サーバサイドフック

外部から push されたときに動くスクリプトです

  1. git push your_server master
  2. pre-receive
     push を受けた際の最初に実行される。主に受け入れテスト用。
     0以外を返すと受け入れ中止。
  3. update
     push を受けた際ブランチ毎に実行される。主に受け入れテスト用。
     0以外を返すと受け入れ中止。
  4. Received!
  5. post-update
     push を受けた際ブランチ毎に実行される。多分メッセージ表示とか用。
  6. post-receive
     push を受けた際の最後に実行される。MLに告知を流したり色々処理したり。
254
264
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
254
264

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?