1#! /bin/sh -e 2 3# Create a new upstream vendor branch. 4 5# Usage: 6# contrib/git-add-vendor-branch.sh <vendor>/<branch-name> <base> 7 8usage () 9{ 10 echo "Usage:" 11 echo " $0 <vendor>/<branch-name> <start-point>" 12 echo 13 echo "<vendor> must have already been set up using contrib/git-fetch-vendor.sh" 14 exit 1 15} 16 17if [ $# != 2 ] 18then 19 usage 20fi 21 22vendor=$(echo "$1" | sed -r "s:([^/]*)/.*$:\1:") 23branch=$(echo "$1" | sed -r "s:[^/]*/(.*)$:\1:") 24start=$2 25 26# Sanity check the new branch argument. If there is no '/', then the 27# vendor will be the same as the entire first argument. 28if [ -z "$vendor" -o -z "$branch" -o ${vendor} = $1 ] 29then 30 usage 31fi 32 33# Check that we know about the vendor 34url=$(git config --get "remote.vendors/${vendor}.url"||true) 35if [ -z "$url" ] 36then 37 echo "Cannot locate remote data for vendor ${vendor}. Have you set it up?" 38 exit 1 39fi 40 41git branch --no-track ${vendor}/${branch} ${start} 42git push vendors/${vendor} ${vendor}/${branch}:refs/vendors/${vendor}/heads/${branch} 43git fetch -q vendors/${vendor} 44git branch --set-upstream-to=remotes/vendors/${vendor}/${branch} ${vendor}/$branch 45echo "You are now ready to check out ${vendor}/${branch}" 46echo "To push the branch upstream, use:" 47echo 48echo "git push vendors/${vendor} ${vendor}/${branch}" 49