diff options
Diffstat (limited to 'helpers/git-pull')
-rwxr-xr-x | helpers/git-pull | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/helpers/git-pull b/helpers/git-pull new file mode 100755 index 0000000..3dbd3e1 --- /dev/null +++ b/helpers/git-pull @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +# This script pulls a specific branch from the origin repository, making sure +# not to keep the prefix. If the branch already exists, try to merge. If not, +# check out from origin. +# +# Syntax: git-pull linaro-local/[branch] -f + +. llvm-common + +branch=$1 +if [[ $branch = '' ]]; then + branch=`get_branch` +fi +force=$2 +if [[ $force != '-f' ]]; then + force= +fi + +if [[ $branch = 'master' ]]; then + echo "Can't pull the master branch." + echo "Use git-refresh instead." + exit 1 +fi + +prefix="linaro-local/" +if echo $branch | grep -q linaro-local; then + prefix="" +fi + +safe_run git-refresh + +if git branch -a | not grep -q $branch; then + echo "Branch '$branch' doesn't exist in this repository" + exit 2 +fi + +# If the branch exists already, merge +if git branch | grep -q $branch; then + if [[ $force = '-f' ]]; then + echo " + Force check out $branch" + safe_run git checkout master + safe_run git branch -D $branch + safe_run git checkout -b $branch origin/$prefix$branch + exit 0 + fi + + echo " + Merging the origin branch..." + if not git merge --ff-only origin/$prefix$branch; then + echo "Error merging the branch. Use -f to force." + exit 1 + fi +# If not, just check out the branch +else + safe_run git checkout -b $branch origin/$prefix$branch +fi |