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