contrib: script to create a new vendor branch

This script is intended to create a new vendor branch.  Doing so is
not completely obvious if you are not familiar with the upstream
structure, so this takes the pain out of getting it right.

It doesn't check out the branch locally, but does set everything up so
that, if you have push enabled for your vendor branches, then

  git push vendors/<vendor> <branch>

will work as expected.

Run the script as

  contrib/git-add-vendor-branch.sh <vendor>/<branch> <start-point>

the <vendor> space must have previously been set up in the way
git-fetch-vendor.sh expects.

    * git-add-vendor-branch.sh: New file.
This commit is contained in:
Richard Earnshaw 2020-01-22 10:06:50 +00:00
parent c892d8f58f
commit f96af171be
2 changed files with 52 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2020-01-22 Richard Earnshaw <rearnsha@arm.com>
* git-add-vendor-branch.sh: New file.
2020-01-20 Richard Earnshaw <rearnsha@arm.com>
* gcc-git-customization.sh: Check that user-supplied remote

View File

@ -0,0 +1,48 @@
#! /bin/sh -e
# Create a new upstream vendor branch.
# Usage:
# contrib/git-add-vendor-branch.sh <vendor>/<branch-name> <base>
usage ()
{
echo "Usage:"
echo " $0 <vendor>/<branch-name> <start-point>"
echo
echo "<vendor> 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}"