67 lines
1.8 KiB
Bash
67 lines
1.8 KiB
Bash
|
#!/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}
|