-
-
Save jcanfield/1566526 to your computer and use it in GitHub Desktop.
Experimental git sync & deploy hooks
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 usingecho
. 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.