-
-
Save sindresorhus/7996717 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash | |
# MIT © Sindre Sorhus - sindresorhus.com | |
# 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" && eval "$2" | |
} | |
# Example usage | |
# In this example it's used to run `npm install` if package.json changed | |
check_run package.json "npm install" |
How do you run npm install
if one of two matching criteria is found? e.g. I want to run npm install
if one of two files is modified, but don't want to run npm install
twice.
You should be able to run it as
check_run "file1\|file2" "npm install"
Probably, I also need to add '-e' parameter to the 'grep' function
Thanks!
there is this too https://github.com/jonathantneal/post-npm-install
is there any way to show message like this, before & after hooks execution for npm i
?
checking for dependency update...
if there is any update going to happen
installing dependency..
if there is no changes to dependency
no new dependency!
This script works like a charm. Thanks for sharing.
Can someone please let me know what is happening inside the script? What does this script arguments mean?
@ajaykumar97 can you help me implement it ? it looks like it is not running ;/
post-rebase
is not a valid git-hookYou have to implement a
post-rewrite
hook and check the first argument to be "rebase
" (could be "amend
" too as @belveryin already tasted).See https://git-scm.com/docs/githooks#_post_rewrite