I have a post-commit hook that does stuff in ruby. It works very well but in some cases I would like to skip the code execution when I do a git rebase
or git commit --amend
.
Does someone have an idea how I could not trigger the post-commit hook in these cases or any work around?
When rebasing, there's a directory called rebase-merge
present in the .git
folder. That could be an approach to disable the hook during a rebase
(the start of a rebase
btw is indicated by the pre-rebase
hook).
Regarding the --amend
however, I can't help you.
If you want to detect git commit --amend from a hook, this is your best option
bash
if [[ $(ps -ocommand= -p $PPID) == "git commit --amend" ]]; then
echo "always allow git commit --amend"
exit 0
fi
ruby
parent=`ps -ocommand= -p #{Process.ppid}`.chomp
if parent == "git commit --amend"
# Always allow an amend
puts "always allow git commit --amend"
exit 0
end
git and shell aliases are expanded in the shell output, so this covers those cases too
Inspiration: https://github.com/brigade/overcommit/issues/146
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With