LoginSignup
0
0

More than 3 years have passed since last update.

全てのリポジトリに共通のgit hooksを適用するスクリプト(huskyにも対応)

Last updated at Posted at 2020-05-27

作ったもの

下記にソース置いてます。
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を有効にした場合

./setup/hook-types
# 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を実行する

0
0
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
0
0