Stars: 894
Forks: 80
Pull Requests: 96
Issues: 111
Watchers: 21
Last Updated: 2023-08-24 08:30:49
Very flexible git hook manager for php developers
License: MIT License
Languages: PHP, Shell, Dockerfile
CaptainHook is an easy to use and very flexible git hook library for php developers. It enables you to configure your git hook actions in a simple json file.
You can use CaptainHook to validate or prepare your commit messages, ensure code quality or run unit tests before you commit or push changes to git. You can automatically clear local caches or install the latest composer dependencies after pulling the latest changes.
CaptainHook makes it easy to share hooks within your team and even can make sure that everybody in your team activates the hooks locally.
You can run cli commands, use some built in validators, or write your own PHP classes that get executed by CaptainHook. For more information have a look at the documentation.
Install the CaptainHook PHAR using Phive or download the PHAR from the github release page.
phive install captainhookOr use Composer to install CaptainHook.
composer require --dev captainhook/captainhookAfter installing CaptainHook you can use the captainhook executable to create a configuration.
vendor/bin/captainhook configureNow there should be a captainhook.json configuration file.
If you are not using the composer-plugin yet you have to activate the hooks manually by installing them to
your local .git repository. To do so just run the following captainhook command.
vendor/bin/captainhook installHave a look at this short installation video.
If you want to make sure your whole team uses the same hooks and you want to make sure everybody has the
hooks installed you can use the CaptainHook composer-plugin as an addition.
composer require --dev captainhook/plugin-composerThe plugin will make sure that the hooks get activated after every composer install or update.
If you don't like the extra dependency just add the following scripts command to your composer.json file instead.
{
"scripts": {
"post-autoload-dump": "vendor/bin/captainhook install -f -s"
}
}Here's an example captainhook.json configuration file.
{
"commit-msg": {
"enabled": true,
"actions": [
{
"action": "\\CaptainHook\\App\\Hook\\Message\\Action\\Beams",
"options": []
}
]
},
"pre-commit": {
"enabled": true,
"actions": [
{
"action": "phpunit"
},
{
"action": "phpcs --standard=psr2 src"
}
]
},
"pre-push": {
"enabled": false,
"actions": []
}
}So you'd like to contribute to the CaptainHook library? Excellent! Thank you very much.
I can absolutely use your help.
Have a look at the contribution guidelines.