git-add-vendor-branch.sh 1.3 KB

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