1#!/bin/sh 2 3usage () 4{ 5 echo "Usage: $0 [--enable-push] <vendor>" 6 echo "The following vendors are already known:" 7 git ls-remote ${upstream} "*/vendors/*" | sed -r "s:.*/vendors/([^/]+)/.*:\1:"|sort|uniq 8 exit 1 9} 10 11# Should we insert a "push" refspec to enable pushing to the vendor branch? 12enable_push=no 13 14upstream=`git config --get "gcc-config.upstream"` 15if [ x"$upstream" = x ] 16then 17 echo "Config gcc-config.upstream not set, run contrib/gcc-git-customization" 18 exit 1 19fi 20 21case $# in 22 1) 23 # vendor names never start with -, so catch this in case user wrote something like --help. 24 case "$1" in 25 -*) 26 usage 27 ;; 28 *) 29 vendor=$1 30 ;; 31 esac 32 ;; 33 2) 34 vendor=$2 35 if [ "$1" = "--enable-push" ] 36 then 37 enable_push=yes 38 else 39 usage 40 fi 41 ;; 42 *) 43 usage 44 ;; 45esac 46 47 48echo "setting up git to fetch vendor ${vendor} to remotes/vendors/${vendor}" 49url=$(git config --get "remote.${upstream}.url") 50pushurl=$(git config --get "remote.${upstream}.pushurl") 51git config "remote.vendors/${vendor}.url" "${url}" 52if [ "x$pushurl" != "x" ] 53then 54 git config "remote.vendors/${vendor}.pushurl" "${pushurl}" 55fi 56git config --replace-all "remote.vendors/${vendor}.fetch" "+refs/vendors/${vendor}/heads/*:refs/remotes/vendors/${vendor}/*" "refs/vendors/${vendor}/heads" 57git config --replace-all "remote.vendors/${vendor}.fetch" "+refs/vendors/${vendor}/tags/*:refs/tags/vendors/${vendor}/*" "refs/vendors/${vendor}/tags" 58if [ "$enable_push" = "yes" ] 59then 60 echo "Warning: take care when pushing that you only push the changes you intend." 61 echo "E.g. use \"git push vendors/${vendor} HEAD\" to push the current branch" 62 git config --replace-all "remote.vendors/${vendor}.push" "refs/heads/${vendor}/*:refs/vendors/${vendor}/heads/*" 63else 64 git config --unset-all "remote.vendors/${vendor}.push" 65fi 66git fetch vendors/${vendor} 67