Skip to content

Instantly share code, notes, and snippets.

@techitesh
Created May 15, 2018 11:35
Show Gist options
  • Select an option

  • Save techitesh/e59e65583b908660d3ce1e78c83c24c6 to your computer and use it in GitHub Desktop.

Select an option

Save techitesh/e59e65583b908660d3ce1e78c83c24c6 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
# MIT © Sindre Sorhus - sindresorhus.com
#
# Updates by Ben Zörb:
# - Works in any project directory
# - Include composer
# - Use yarn if available
#
# git hook to run a command after `git pull` if a specified file was changed
# Run `chmod +x post-merge` to make it executable then put it into `.git/hooks/`.
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_run() {
echo "$changed_files" | grep --quiet "$1" && cd $(get_dir "$1") && eval "$2"
}
get_dir() {
base=$(git rev-parse --show-cdup)
file=$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD | grep "$1")
dirname "./$base$file"
}
# Example usage
# In this example it's used to run `npm install` if package.json changed and `bower install` if `bower.json` changed.
check_run package.json "( [ -f "$(which yarn)" ] && yarn || npm install )"
check_run composer.lock "[ -f ./composer.phar ] && php composer.phar install || composer install"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment