#!/bin/bash # Copyright (C) 2010-2011 by Mike Gabriel # # This is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA set -xe CHECKOUT=${1:-master} [ -d .git ] && { TIMESTAMP=$(date +%s) CURRENT_BRANCH=$(git branch | grep "*" | awk '{print $2}') # switch to branch given as $CHECKOUT, if it does not exist locally, create it... git checkout $CHECKOUT &>/dev/null || git checkout -b $CHECKOUT >/dev/null # switch to a tmp branch... git checkout -b tmp-$TIMESTAMP &>/dev/null # pull $CHECKOUT from origin into the tmp branch LANG=en_US.UTF-8 git pull origin $CHECKOUT 2>/dev/null | egrep "^Already up-to-date.$" &>/dev/null && { # drop the tmp branch git checkout $CURRENT_BRANCH &>/dev/null git branch -D tmp-$TIMESTAMP >/dev/null exit 1 } || { # drop the tmp branch git checkout $CURRENT_BRANCH &>/dev/null git branch -D tmp-$TIMESTAMP >/dev/null exit 0 } } || exit 0