This package allows you to manage Git hooks centrally within your repository.
It's language-agnostic and only requires Git and a POSIX-compliant shell (like sh, bash, dash, or zsh).
-
Add post-install/update scripts to your composer.json
(so the package automatically configures git hooks):{ "scripts": { "post-install-cmd": [ "@composer exec githooks install" ], "post-update-cmd": [ "@composer exec githooks install" ] } } -
Install the package:
composer require webestit/githooks
The package will automatically:
- Configure
core.hooksPathto point to its ownhooksdirectory. - Create a
.githooksdirectory in your project root with subdirectories for common hooks.
- The package sets Git's
core.hooksPathto its directory which contains all Git hooks. - Every Git hook executes all executable scripts found in your project's
.githooks/<hook-name>/directory. - Scripts are executed in alphabetical order (e.g.,
01-check.sh,02-test.sh).
- Go to the
.githooks/<hook-name>/directory in your project root. - Add your shell script:
# Example: .githooks/pre-commit/01-lint.sh #!/bin/sh echo "Running linter..." # your logic here
- Make it executable:
chmod +x .githooks/pre-commit/01-lint.sh
You can find example hooks in the package's examples directory. Feel free to copy and adapt them to your project's
.githooks/ folder.
You can bypass hooks using --no-verify:
git commit --no-verifyTo stop using these managed hooks and return to Git defaults:
git config --unset core.hooksPath