diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 8f112af5691..c5e4604d6f5 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,7 @@ +2020-01-22 Richard Earnshaw + + * git-add-vendor-branch.sh: New file. + 2020-01-20 Richard Earnshaw * gcc-git-customization.sh: Check that user-supplied remote diff --git a/contrib/git-add-vendor-branch.sh b/contrib/git-add-vendor-branch.sh new file mode 100755 index 00000000000..8fa86682151 --- /dev/null +++ b/contrib/git-add-vendor-branch.sh @@ -0,0 +1,48 @@ +#! /bin/sh -e + +# Create a new upstream vendor branch. + +# Usage: +# contrib/git-add-vendor-branch.sh / + +usage () +{ + echo "Usage:" + echo " $0 / " + echo + echo " must have already been set up using contrib/git-fetch-vendor.sh" + exit 1 +} + +if [ $# != 2 ] +then + usage +fi + +vendor=$(echo "$1" | sed -r "s:([^/]*)/.*$:\1:") +branch=$(echo "$1" | sed -r "s:[^/]*/(.*)$:\1:") +start=$2 + +# Sanity check the new branch argument. If there is no '/', then the +# vendor will be the same as the entire first argument. +if [ -z "$vendor" -o -z "$branch" -o ${vendor} = $1 ] +then + usage +fi + +# Check that we know about the vendor +url=$(git config --get "remote.vendors/${vendor}.url"||true) +if [ -z "$url" ] +then + echo "Cannot locate remote data for vendor ${vendor}. Have you set it up?" + exit 1 +fi + +git branch --no-track ${vendor}/${branch} ${start} +git push vendors/${vendor} ${vendor}/${branch}:refs/vendors/${vendor}/heads/${branch} +git fetch -q vendors/${vendor} +git branch --set-upstream-to=remotes/vendors/${vendor}/${branch} ${vendor}/$branch +echo "You are now ready to check out ${vendor}/${branch}" +echo "To push the branch upstream, use:" +echo +echo "git push vendors/${vendor} ${vendor}/${branch}"