SuperHooks is a quick way to have hooks apply across multiple projects. It allows you to decouple the hooks you use from the projects you use them in by placing the hooks into separate folders.
Hooks folders are defined in the git config under superhooks.path
Usage of the CLI
super_hooks install # Install `super_hooks` into a git repository
super_hooks list # List the current hooks
super_hooks help # See the other options
super_hook run pre-commit # Run all pre-commit hooks manually
If you have a folder with the following structure
./~
└── hooks
├── pre-commit
│ ├── script1.sh
│ └── script2.rb
└── pre-push
└── prevent-force
└── main.sh
All executables are placed under their respective folders.
You would run git config --global --add superhooks.path ~/hooks
. The hooks inside that folder would then run on all git repositories that have super_hooks
installed. If you have project specific hooks, you can have them ran as well by adding to the project's git config with git config --add ./path/to/hook/folder
Once super_hooks
is installed, you can easily create hooks by placing executables files (chmod 755
) under a folder with the hook name.
For example, if you were to create a pre-commit hook for your user, you would do the following:
mkdir -p ~/.git_hooks/pre-commit/
git config --add superhooks.path ~/.git_hooks
touch ~/.git_hooks/pre-commit/cool_hook
chmod 755 ~/.git_hooks/pre-commit/cool_hook
Note: having a --about
option when running your executable will allow you to have a short description when listing hooks. See my rake example for this project.
Example: I have my own hooks which I have installed for all of my projects:
git clone [email protected]:frankywahl/git_hooks.git somewhere
cd somewhere
git config --global --add superhooks.path `pwd`
brew tap frankywahl/tap
brew install frankywahl/tap/super_hooks
- go: to install it yourself from source
make install
This will create a binary tagged with the commit you're currently on
You can get help on the command line to see supported commands:
super_hooks --help
Then for a specific operation example
super_hooks install --help
- Fork it ( https://github.com/[my-github-username]/super_hooks/fork )
- 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
) - Create a new Pull Request
Copyright (c) 2022 Franky W.