Git post-merge hook.
How to create a global git commit hook by Matt Venables
1 Enable git templates (This tells git to copy everything in ~/.git-templates to your per-project .git/ directory when you run git init):
git config --global init.templatedir '~/.git-templates'
2 Create a directory to hold the global hooks:
mkdir -p ~/.git-templates/hooks
3 Write your hooks in ~/.git-templates/hooks. For example, here's a post-commit hook (located in ~/.git-templates/hooks/post-commit):
#!/bin/sh
# Copy last commit hash to clipboard on commit
git log -1 --format=format:%h | pbcopy
# Add other post-commit hooks
4 Make sure the hook is executable.
chmod a+x ~/.git-templates/hooks/post-commit
5 Re-initialize git in each existing repo you'd like to use this in:
git init
NOTE if you already have a hook defined in your local git repo, this will not overwrite it.
#/usr/bin/env bash
# MIT © Sindre Sorhus - sindresorhus.com
# forked by Gianluca Guarini
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_run() {
echo "$changed_files" | grep -E --quiet "$1" && eval "$2"
}
# `npm install` and `npm prune` if the `package.json` file gets changed
# to update all the nodejs ( grunt ) dependencies deleting the unused packages (not listed into the `package.json` file)
check_run package.json "npm install && npm prune"
# `bower install` and `bower prune` if the `bower.json` file gets changed
# to install all the frontend dependencies removing the unused packages ( not listed into the `bower.json` file )
check_run bower.json "bower install && bower prune"
# `composer install` if the `composer.json` file gets changed
# to update all the php dependencies
check_run composer "sudo composer install"
# for the sass files we need a bit more
if [ -f "config.rb" ]
then
# `compass compile` to compile all the scss files when they get changed
check_run ".scss|.sass" "compass compile"
# check whether there is a gruntfile in the root of the project
elif [[ -n $(find . -maxdepth 1 -iname "gruntfile.js" -o -iname "gruntfile.coffee") ]]
then
# try to compile just using grunt sass
check_run ".scss|.sass" "grunt sass"
# check whether there is a gulpfile in the root of the project
elif [[ -n $(find . -maxdepth 1 -iname "gulpfile.js" -iname "gulpfile.coffee") ]]
then
# try to compile just using grunt sass
check_run ".scss|.sass" "gulp sass"
fi