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