Skip to content

Instantly share code, notes, and snippets.

@bdecarne
Forked from zamicol/post-receive
Last active August 29, 2015 14:17
Show Gist options
  • Save bdecarne/ef7f99a3443c48855c79 to your computer and use it in GitHub Desktop.
Save bdecarne/ef7f99a3443c48855c79 to your computer and use it in GitHub Desktop.
#!/bin/sh
#Put this script into <gitProject>/hooks/post-receive on the production server
#Make sure this script has execute permissions (chmod +x post-receive)
#You can create a group (like "git"), make it owner of this file, and add
#every user that needs to push to the that group.
echo 'start repo to prod'
PROJPATH="PushDirectoryLocationHere"
GITPATH="LocationOfYourGitDirectoryHere"
OWNER="OwnerOfTheProject example: www:www"
function push(){
git --work-tree=$PROJPATH --git-dir=$GITPATH checkout -f master
find $PROJPATH/* -type d -exec chmod 775 {} \;
find $PROJPATH/* -type f -exec chmod 664 {} \;
chown -R $OWNER $PROJPATH/*
echo 'push complete'
}
#If executed from shell, push latest master commit regardless.
#This allows you to re-push by entering "./post-receive" from the command line.
if [ -t 0 ]; then
push
else
#Determine the branch, only push to prod on master.
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
if [ "master" == "$branch" ]; then
echo 'Master branch. Pushing to prod'
push
else
echo 'Not on master. Not pushing to prod'
fi
done
fi
echo 'End repo to prod'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment