作ったもの
下記にソース置いてます。
https://github.com/ktkn304/githooks
できること
全てのgitリポジトリに共通のgit hooksを提供する。
リポジトリ個別のgit hooksも実行する(huskyにて作られたgit hookも実行できる)。
※ これらの動作を実現するためにグローバルなgitの設定(core.hooksPath
)を書き換えているので注意
使い方
# 任意のディレクトリにcloneする
$ git clone https://github.com/ktkn304/githooks.git
$ cd githooks
# インストールスクリプトを実行する
# これにより、以下が実行される
# 1. 下記のディレクトリ・ファイル作成
# ./hooks/pre-commit # 各フックスクリプトを呼び出すシェルスクリプトが作成される
# ./custom-hooks/pre-commit/ # グローバルに適用したいフックスクリプトを配置するディレクトリ
# 2. gitの設定変更(core.hooksPathにリポジトリのhooksディレクトリを指定)
$ ./setup/install
あとは、全体に適用したいフックスクリプトは./custom-hooks/pre-commit/ディレクトリへ配置すればよい。
また、リポジトリ毎のフックスクリプトはリポジトリの.git/hooksディレクトリへ通常通り配置する(huskyもこちらへ配置してくれるので、特に気にしなくてもよい。lefthookはわからない・・・)。
pre-commit以外のフックについて
デフォルトではpre-commitのフックスクリプトしか実行しないようになっている。
./setup/hook-types
を編集し、./setup/install
を実行することで任意のフックに対応できる。
例: commit-msgを有効にした場合
# applypatch-msg
commit-msg
# fsmonitor-watchman
# post-update
# pre-applypatch
pre-commit
# pre-merge-commit
# prepare-commit-msg
# pre-push
# pre-rebase
# pre-receive
# update
上記のように変更後、./setup/install
を実行する