brainmaestro/composer-git-hooks
Manage Git hooks via Composer scripts. Install, version, and run pre-commit/pre-push and more across your team using composer install/update. Simple config, no extra tooling, keeps hooks consistent in any PHP project.
The previous release had issues with hook definitions that did not have a command per line. Reverted for now, and will be revised later
When generating a new hook, the commands are now concatenated with && to ensure that the each command is only executed if the preceding one returns a success (0) status code
git rev-parse --git-common-dir used to resolve the git dir, so a fallback was introduced.--ignore-lock modification was fixed, so there should be no issues for newcomers to an existing project anymore.Thanks to @devnix for pointing out these issues!
git is now only invoked to resolve the git-dir if a --git-dir is not provided--lock-dir was added which resolves to the current working directory if not providedcghooks in a git worktree now correctly resolves the .git folder.cghooks is now aware of composer dev mode, and will not add or update hooks if run in production mode (--no-dev). This feature was REVERTEDAll commands (besides the hook test ones) gained the ability to manage hooks globally with the --global option.
Like:
# Adds hooks in global directory (falls back to git config core.hooksPath and $COMPOSER_HOME)
cghooks add --global
# You can also directly specify the directory
cghooks add --global --git-dir /home/brainmaestro/.config/git_hooks
The update, list-hooks and remove commands work similarly.
This change was non-trivial because the application assumed it was always being run in the current directory. Took the opportunity for some cleanup as well.
For more complex hooks, they can be written as separate commands in an array. eg:
"pre-commit": [
"echo committing as $(git config user.name)",
"php-cs-fixer .",
"phpunit"
]
Files that are not necessary for the library are excluded with .gitattrributes
How can I help you explore Laravel packages today?