blob: f394e6934ab6bb32c3762a5312197b5770cb0cbb [file] [log] [blame]
LOCAL_BRANCH=$1
BUILD_FROM_TAG=$2
REMOTE_BRANCH=$3
CHECKOUT_SUCCESSFUL=0
buildFromTag(){
local tag=$1
local localbranch=$1
local remotebranch=$2
git fetch --tags
git show-ref --tags --verify --quiet refs/tags/$tag
if [ $? -eq 0 ]; then
echo "Build from tag: Checkout tag ${tag}."
git checkout $tag
else
echo "Build from tag: Checkout local branch ${localbranch} or remote branch ${remotebranch}."
checkoutLocalOrRemoteBranch $localbranch $remotebranch
fi
}
checkoutLocalBranch(){
local localbranch=$1
local remotebranch=$2
CHECKOUT_SUCCESSFUL=0
if [ ! -z "$(git branch | grep $localbranch)" ]; then
echo "Checkout local branch ${localbranch}."
git checkout $localbranch
git pull origin $remotebranch
CHECKOUT_SUCCESSFUL=1
else
echo "Could not checkout local branch ${localbranch}."
fi
}
checkoutRemoteBranch(){
local localbranch=$1
local remotebranch=$2
local gitremote=`git remote`
CHECKOUT_SUCCESSFUL=0
if [ ! -z "$(git branch -r | grep ${gitremote}/$remotebranch)" ]; then
echo "Checkout remote branch ${gitremote}/${remotebranch}."
git checkout -b $localbranch ${gitremote}/$remotebranch
git pull origin $remotebranch
CHECKOUT_SUCCESSFUL=1
else
echo "Could not checkout remote branch ${gitremote}/${remotebranch}."
fi
}
checkoutLocalOrRemoteBranch(){
local localbranch=$1
local remotebranch=$2
echo "Trying to checkout local branch ${localbranch} or remote branch ${remotebranch}."
CHECKOUT_SUCCESSFUL=0
checkoutLocalBranch $localbranch $remotebranch
if [ $CHECKOUT_SUCCESSFUL -eq 0 ]; then
checkoutRemoteBranch $localbranch $remotebranch
fi
}
git rm --cached -r . > /dev/null
git reset --hard > /dev/null
if echo $BUILD_FROM_TAG | grep -q -w "true"; then
buildFromTag $LOCAL_BRANCH $REMOTE_BRANCH
else
checkoutLocalOrRemoteBranch $LOCAL_BRANCH $REMOTE_BRANCH
fi