This is a Composer plugin, which installs an application, that manages and handles everything related to git
hooks in your project.
Web developers is not necessarily experts when it comes to shell scripting. With Git Hooks, this is no longer an issue. You can now write your plugins in PHP and can utilize all it's features.
If you wanted a git hook to perform serveral things, you would normally have to put it all into a single file. This increases the risk of errors, bloats the file, etc. By using this application, you can write and register each script individually. This makes it easier to read, understand and not to mention debug.
The application will automatically locate git hooks from compatible packages and automatically register and enable them. This means you don't have to configure anything. You install the package with your desired git hooks and that's it.
The purpose of this application is to separate and "modularize" the git hooks. Fx. you could create a package, with your most used git hooks from your projects and share it in a community or with your colleagues.
You install the package via Composer by using the following command:
composer require rugaard/git-hooks
Whenever you're performing git
actions, the application will automatically run and execute the appropriate scripts to the triggered git hooks. There is no manual involvement required.
However, it is possible to create a custom configuration file, where you can disable scripts and overwrite/append arguments, if the script supports it.
To create a custom configuration, you need to run the following command, in the root of your project:
./vendor/bin/git-hooks config
This creates a git-hooks.config.json
file, which contains a few options: register
, disable
and parameters
.
You can create and register your own project specific scripts, by adding it to the register
array in the custom configuration file:
{
"register": [
"Namespace\\GitHooks\\PreCommit\\ForceIssueNumberCommand"
],
"disable": [],
"parameters": {}
}
You might find a git-hook collection with multiple scripts, but you are not interested in using all of them at once. Instead of skipping the entire collection or create your own collection, you can instead disable the scripts you don't want to use.
To disable a script, simply add it to disable
array in the custom configuration file:
{
"register": [],
"disable": [
"Namespace\\GitHooks\\PreCommit\\ValidateMessageCommand"
],
"parameters": {}
}
It's possible to overwrite or append arguments to specific scripts, if these scripts supports it. This gives some form of flexibility when installing a git-hook collection from a 3rd party.
An example could be, that you wanted to change the "printer" that the installed PHPUnit script uses:
{
"register": [],
"disable": [],
"parameters": {
"Namespace\\GitHooks\\PrePush\\PhpTestSuiteCommand": {
"driver": "phpunit",
"config": "tests/phpunit.xml"
}
}
}
To get an overview of which scripts are registered with the application, you can run the following command:
./vendor/bin/git-hooks registered
This command also lists the namespaces of each script, which is needed if you're using a custom configuration file.
Follow the guide in the projects Wiki.
This package is licensed under MIT.