|
|
@ -1,6 +1,34 @@ |
|
|
|
#!/usr/bin/env sh |
|
|
|
echo 'Updating dotfiles' |
|
|
|
cd @GIT_DIR@ |
|
|
|
git checkout master |
|
|
|
git pull |
|
|
|
git submodule update |
|
|
|
|
|
|
|
# Update the status of the origin |
|
|
|
git remote update origin |
|
|
|
|
|
|
|
# Check if we need to update at all |
|
|
|
# Kindly borrowed from http://stackoverflow.com/questions/3258243/git-check-if-pull-needed |
|
|
|
LOCAL=$(git rev-parse @) |
|
|
|
REMOTE=$(git rev-parse @{u}) |
|
|
|
BASE=$(git merge-base @ @{u}) |
|
|
|
|
|
|
|
# All good, no need to update |
|
|
|
if [ $LOCAL = $REMOTE ]; then |
|
|
|
echo "Up-to-date" |
|
|
|
exit 0 |
|
|
|
# Time to update to the remote branch |
|
|
|
elif [ $LOCAL = $BASE ]; then |
|
|
|
echo "Need to pull" |
|
|
|
echo 'Updating dotfiles' |
|
|
|
opwd=$PWD |
|
|
|
cd @GIT_DIR@ |
|
|
|
git checkout master |
|
|
|
git pull |
|
|
|
git submodule update |
|
|
|
cd $owpd |
|
|
|
# Local changes exist, we need to push these before we can cleanly update |
|
|
|
elif [ $REMOTE = $BASE ]; then |
|
|
|
echo "Local changes, need to push before updating." |
|
|
|
exit 1 |
|
|
|
# Divereged branches, this will need a manual cleanup to fix |
|
|
|
else |
|
|
|
echo "Error: Diverged Branches. Resolve Manually" |
|
|
|
exit 1 |
|
|
|
fi |