mirror of
https://github.com/filiprojek/nork.git
synced 2024-11-02 10:02:28 +01:00
feat: githooks
This commit is contained in:
parent
95e60bc04e
commit
8afcd04a09
59
.githooks/pre-push
Executable file
59
.githooks/pre-push
Executable file
@ -0,0 +1,59 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# @link https://gist.github.com/mattscilipoti/8424018
|
||||||
|
#
|
||||||
|
# Called by "git push" after it has checked the remote status,
|
||||||
|
# but before anything has been pushed.
|
||||||
|
#
|
||||||
|
# If this script exits with a non-zero status nothing will be pushed.
|
||||||
|
#
|
||||||
|
# Steps to install, from the root directory of your repo...
|
||||||
|
# 1. Copy the file into your repo at `.git/hooks/pre-push`
|
||||||
|
# 2. Set executable permissions, run `chmod +x .git/hooks/pre-push`
|
||||||
|
# 3. Or, use `rake hooks:pre_push` to install
|
||||||
|
#
|
||||||
|
# Try a push to master, you should get a message `*** [Policy] Never push code directly to...`
|
||||||
|
#
|
||||||
|
# The commands below will not be allowed...
|
||||||
|
# `git push origin master`
|
||||||
|
# `git push --force origin master`
|
||||||
|
# `git push --delete origin master`
|
||||||
|
|
||||||
|
|
||||||
|
protected_branch='master'
|
||||||
|
|
||||||
|
policy="\n\n[Policy] Never push code directly to the "$protected_branch" branch! (Prevented with pre-push hook.)\n\n"
|
||||||
|
|
||||||
|
current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
|
||||||
|
|
||||||
|
push_command=$(ps -ocommand= -p $PPID)
|
||||||
|
|
||||||
|
is_destructive='force|delete|\-f'
|
||||||
|
|
||||||
|
will_remove_protected_branch=':'$protected_branch
|
||||||
|
|
||||||
|
do_exit(){
|
||||||
|
echo -e $policy
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ $push_command =~ $is_destructive ]] && [ $current_branch = $protected_branch ]; then
|
||||||
|
do_exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $push_command =~ $is_destructive ]] && [[ $push_command =~ $protected_branch ]]; then
|
||||||
|
do_exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $push_command =~ $will_remove_protected_branch ]]; then
|
||||||
|
do_exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prevent ALL pushes to protected_branch
|
||||||
|
if [[ $push_command =~ $protected_branch ]] || [ $current_branch = $protected_branch ]; then
|
||||||
|
do_exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
unset do_exit
|
||||||
|
|
||||||
|
exit 0
|
5
setup-repo.sh
Executable file
5
setup-repo.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cp .githooks/* .git/hooks
|
||||||
|
|
||||||
|
echo "hooks have been copied"
|
Loading…
Reference in New Issue
Block a user