14章フック
Gitの標準的な動作は、フックによって微修正できる。リポジトリでコミットやパッチといった特定のイベントが発生したときにフックを使えば、1個以上のスクリプトを実行できる。一般に、イベントはあらかじめ決められたステップに分割されており、それらのステップにカスタムスクリプトを結びつけられるようになっている。Gitイベントが発生すると、各ステップの最初の処理として結びつけられたスクリプトが実行される。
フックは特定のリポジトリに所属し、そのリポジトリに影響を与えるが、クローン操作ではコピーされない。つまり、プライベートリポジトリでセットアップしたフックは新しいクローンにはコピーされず、新しいクローンの動作を変えない。開発プロセス上の何らかの理由で各開発者の個人用開発リポジトリにフックをインストールしなければならない場合には、クローン以外の手段で.git/hooksディレクトリをコピーするようにしなければならない†1。
[†1] 監訳注:リポジトリ内に.githooksなどのフック共有用のディレクトリを作成してフックをそのディレクトリ内に配置しておき、各開発者はリポジトリをクローン後にgit config core.hooksPath .githooksを実行してデフォルトの.git/hooksの代わりに.githooksを使用する設定を追加することで、開発チーム内でフックを共有しつつフックの変更履歴もGitで管理することができる。
これと新しいリポジトリの初期化を混同しないようにしよう。git initコマンドが実行されると、Gitは新しいリポジトリに利用可能なフックをコピーする。コピーされるのは、Gitが提供するデフォルトサンプルフックと、テンプレートディレクトリ(template ...