This package helps you to setup quickly some useful scripts as hook for all your project managed by git
. Somes are already bundles with this app, but you can add yours. It takes place in git
hooks directory (.git/hooks
or hooks/
for bare repositories).
Installation is very simple :
$ cd your-project/.git/ # or simply your-project.git for a bare repository
$ mv hooks hooks_ # backup existing hooks
$ git clone git://github.com/tdebarochez/git-hooks-manager.git hooks
$ cd hooks && npm install # initialization
There is two ways to use it :
- clone this repo and use one of provided hooks
- clone localy this repo, add your own scripts and clone your copy on every of your project
During intialization, this application create, for each hook type, one symbolic link to itself and a directory where each symbolic link will be added when you will decide to setup a hook. IE :
-rwxr-xr-x@ 1 tdebarochez staff 10K 24 jui 11:02 index.js
lrwxr-xr-x 1 tdebarochez staff 53B 18 jui 21:16 post-checkout -> index.js
drwxr-xr-x 2 tdebarochez staff 68B 18 jui 21:16 post-checkout.d
To list every setup hooks, run ls *.d/*
Usage :
$ ./index.js <command> <hook_type> <args>
search : list every available hooks for a git hook type (pre-commit
, post-commit
, post-receive
, etc...)
add / rm : setup or remove a hook
hook : execute one by one every setup hooks by type
Type ./index.js help <command>
to get more infos about a command.
Every scripts are store in hooks/
directory, arrange by hook type (ie: hooks/pre-commit/your-hook-name/
). For every script you must define a hook.json
file. Example :
{
"index": "app.js",
"description": "long description of your hook",
"post-install": "npm install",
"async": false
}
index : entry point of your hook
description : long description
async : this property daemonize the main process for long during operation (ie: builds, unit testing, etc...), this is typicaly for post-something
hooks.
pre-install, post-install, pre-remove and post-remove : those commands are executed before or after setup or remove a hook for your project. You can use it to download dependencies, cleanup directories, etc...
You can look at existing hooks to see an example.
Add more and more hooks