@azu's global git hooks.
- Global Git Hooks collection
- Using
core.hooksPath
on Git 2.9+
- Using
- If project has set up local git hook, call local hooks too
- Order: local hooks -> global hooks
- Define ignoring project by
IGNORE_GLOBAL_HOOKS
file
pre-commit
- secretlint prevent to commit credentials
Requirement:
- Node.js 16+
- Git 2.9+
- 1Password CLI
Check if you already have any global git hooks:
git config --global core.hooksPath
If output is not empty, run following steps:
# clone this repository
git clone /~https://github.com/azu/git-hooks.git git-hooks
cd git-hooks
# Install Dependencies
yarn install
# setup git config
git config --global core.hooksPath $(pwd)/hooks
op inject --in-file .env.local.template --out-file .env
Some project have defined core.hooksPath
in git config.
Git prefer to use local core.hooksPath
than global core.hooksPath
.
So, I've overridden the local core.hooksPath
with global hooks paths.
# Override <project>/.githook → <global>/git-hooks/hooks/
function preexec_git_global_hooks() {
inside_git_repo="$(git rev-parse --is-inside-work-tree 2>/dev/null)"
if [ "$inside_git_repo" ]; then
githooksDir=$(git rev-parse --show-toplevel)"/.githooks"
if [ -d "${githooksDir}" ]; then
git config --local core.hooksPath "/path/to/git-hooks/hooks"
fi;
fi
}
autoload -Uz add-zsh-hook
add-zsh-hook preexec preexec_git_global_hooks
You have set up, then bootstrap script create IGNORE_GLOBAL_HOOKS
file.
It is collection of absolute path to ignore global hooks.
IGNORE_GLOBAL_HOOKS
:
/path/to/my-project-a
/path/to/my-project-b
If the project path is included in IGNORE_GLOBAL_HOOKS
, global git hook does not run.
Use --no-verify
options.
git commit --no-verify
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
MIT © azu