Skip to content

Instantly share code, notes, and snippets.

@jcanfield
Forked from khalsah/deploy.sh
Created January 5, 2012 18:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcanfield/1566526 to your computer and use it in GitHub Desktop.
Save jcanfield/1566526 to your computer and use it in GitHub Desktop.
Experimental git sync & deploy hooks
#!/bin/sh
LOCAL_BRANCH="master"
LIVE_BRANCH="live"
REMOTE_NAME="web"
# Remote Name is your Deploy Branch. Default is web. Live Branch is the branch on the Remote Server that is merged with master to synchronize changes
if [ "$(git symbolic-ref -q HEAD)" != "refs/heads/${LOCAL_BRANCH}" ]; then
echo "Not on ${LOCAL_BRANCH}, not deploying"
exit 1
else
echo "Syncing and deploying"
echo "Pushing to ${REMOTE_NAME} on ${LOCAL_BRANCH} branch..."
git push ${REMOTE_NAME} ${LOCAL_BRANCH}:master
echo "Pulling from ${REMOTE_NAME}..."
git pull ${REMOTE_NAME} ${LIVE_BRANCH}
echo "Pushing to ${REMOTE_NAME}..."
git push ${REMOTE_NAME} ${LOCAL_BRANCH}:master
fi
[ -f /usr/local/bin/growlnotify ] && growlnotify -s -m "Project has been Deployed" || echo "Project has been deployed"
exit
#!/bin/sh
cd "$(dirname $0)/.."
export GIT_DIR="."
export GIT_WORK_TREE=".."
if [ "$(git symbolic-ref -q HEAD)" != "refs/heads/live" ]; then
echo "Not on live, not deploying"
exit 1
elif ! ./hooks/sync; then
echo "Sync failed"
exit 1
elif ! git merge --ff-only "refs/heads/master"; then
echo "New changes on live, not deploying"
exit 1
else
echo "Changes deployed"
exit 0
fi
#!/bin/sh
cd "$(dirname $0)/.."
export GIT_DIR="."
export GIT_WORK_TREE=".."
if [ "$(git symbolic-ref -q HEAD)" != "refs/heads/live" ]; then
echo "Not on live, not syncing changes"
exit 1
elif ! git diff-index --exit-code --quiet --cached HEAD --; then
echo "Changes exist in index, not syncing"
exit 1
elif [ -z "$(git status --porcelain)" ]; then
echo "No changes to commit"
exit 0
else
git add --all $GIT_WORK_TREE
git commit -m "$(date "+SYNC %F %T")"
exit 0
fi
@jcanfield
Copy link
Author

Added [ -f /usr/local/bin/growlnotify ] && growlnotify -s -m "Project has been Deployed" || echo "Project has been deployed" for Mac OSX Growl Notification. Quick check to see if Growl is Installed (in the proper place) then notifies that the project has been synchronized with a fall-back using echo. Nice for those large commits that take a little while. I'll jump over to another window or screen and work on something-- then am notified that the Sync was complete.

It's all about the simple things in life.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment