Can Git hook scripts be managed along with the repository?
In Git 2.9, the
configuration option core.hooksPath
specifies a custom hooks directory.
Move your hooks to a hooks
tracked directory in your repository. Then, configure each instance of the repository to use the tracked hooks
instead of $GIT_DIR/hooks
:
git config core.hooksPath hooks
In general, the path may be absolute, or relative to the directory where the hooks are run (usually the working tree root; see DESCRIPTION section of man githooks
).
Theoretically, you could create a hooks
directory (or whatever name you prefer) in your project directory with all the scripts, and then symlink them in .git/hooks
. Of course, each person who cloned the repo would have to set up these symlinks (although you could get really fancy and have a deploy script that the cloner could run to set them up semi-automatically).
To do the symlink on *nix, all you need to do is:
root="$(pwd)"
ln -s "$root/hooks" "$root/.git/hooks"
use ln -sf
if you're ready to overwrite what's in .git/hooks
If your project is a JavaScript project and you use npm
as package manager you can use shared-git-hooks to enforce githooks on npm install
.