| #!/bin/sh |
| |
| usage () |
| { |
| echo "Usage: $0 [--enable-push] <vendor>" |
| echo "The following vendors are already known:" |
| git ls-remote ${upstream} "*/vendors/*" | sed -r "s:.*/vendors/([^/]+)/.*:\1:"|sort|uniq |
| exit 1 |
| } |
| |
| # Should we insert a "push" refspec to enable pushing to the vendor branch? |
| enable_push=no |
| |
| upstream=`git config --get "gcc-config.upstream"` |
| if [ x"$upstream" = x ] |
| then |
| echo "Config gcc-config.upstream not set, run contrib/gcc-git-customization" |
| exit 1 |
| fi |
| |
| case $# in |
| 1) |
| # vendor names never start with -, so catch this in case user wrote something like --help. |
| case "$1" in |
| -*) |
| usage |
| ;; |
| *) |
| vendor=$1 |
| ;; |
| esac |
| ;; |
| 2) |
| vendor=$2 |
| if [ "$1" = "--enable-push" ] |
| then |
| enable_push=yes |
| else |
| usage |
| fi |
| ;; |
| *) |
| usage |
| ;; |
| esac |
| |
| |
| echo "setting up git to fetch vendor ${vendor} to remotes/vendors/${vendor}" |
| url=$(git config --get "remote.${upstream}.url") |
| pushurl=$(git config --get "remote.${upstream}.pushurl") |
| git config "remote.vendors/${vendor}.url" "${url}" |
| if [ "x$pushurl" != "x" ] |
| then |
| git config "remote.vendors/${vendor}.pushurl" "${pushurl}" |
| fi |
| git config --replace-all "remote.vendors/${vendor}.fetch" "+refs/vendors/${vendor}/heads/*:refs/remotes/vendors/${vendor}/*" "refs/vendors/${vendor}/heads" |
| git config --replace-all "remote.vendors/${vendor}.fetch" "+refs/vendors/${vendor}/tags/*:refs/tags/vendors/${vendor}/*" "refs/vendors/${vendor}/tags" |
| if [ "$enable_push" = "yes" ] |
| then |
| echo "Warning: take care when pushing that you only push the changes you intend." |
| echo "E.g. use \"git push vendors/${vendor} HEAD\" to push the current branch" |
| git config --replace-all "remote.vendors/${vendor}.push" "refs/heads/${vendor}/*:refs/vendors/${vendor}/heads/*" |
| else |
| git config --unset-all "remote.vendors/${vendor}.push" |
| fi |
| git fetch vendors/${vendor} |