2010-03-18 15:46:07 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
repos="
|
2010-03-20 13:23:39 +00:00
|
|
|
.
|
2010-03-18 15:46:07 +00:00
|
|
|
data/xonotic-data.pk3dir
|
|
|
|
data/xonotic-maps.pk3dir
|
|
|
|
data/xonotic-music.pk3dir
|
|
|
|
darkplaces
|
|
|
|
"
|
|
|
|
|
2010-03-18 15:57:21 +00:00
|
|
|
if [ "$#" = 0 ]; then
|
|
|
|
set -- help
|
|
|
|
fi
|
2010-03-18 15:46:07 +00:00
|
|
|
cmd=$1
|
|
|
|
shift
|
|
|
|
|
|
|
|
d0=`pwd`
|
|
|
|
case "$cmd" in
|
2010-03-20 13:20:07 +00:00
|
|
|
update|pull)
|
2010-03-18 15:46:07 +00:00
|
|
|
base=`git config remote.origin.url`
|
|
|
|
base=${base%/xonotic.git}
|
|
|
|
for d in $repos; do
|
|
|
|
if [ -d "$d0/$d" ]; then
|
|
|
|
cd "$d0/$d"
|
|
|
|
git config remote.origin.url "$base/${d##*/}.git"
|
|
|
|
git pull
|
|
|
|
cd "$d0"
|
|
|
|
else
|
|
|
|
git clone "$base/${d##*/}.git" "$d0/$d"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
;;
|
|
|
|
checkout)
|
|
|
|
remote=$1
|
|
|
|
branch=$2
|
|
|
|
if [ -z "$branch" ]; then
|
|
|
|
branch=$remote
|
|
|
|
remote=origin
|
|
|
|
fi
|
|
|
|
exists=false
|
|
|
|
for d in $repos; do
|
|
|
|
cd "$d0/$d"
|
|
|
|
if git rev-parse "refs/heads/$branch" >/dev/null 2>&1; then
|
|
|
|
exists=true
|
|
|
|
git checkout "$branch"
|
|
|
|
elif git rev-parse "refs/remotes/$remote/$branch" >/dev/null 2>&1; then
|
|
|
|
exists=true
|
|
|
|
git checkout --track -b "$branch" "$remote/$branch"
|
|
|
|
else
|
|
|
|
git checkout master
|
|
|
|
fi
|
|
|
|
cd "$d0"
|
|
|
|
done
|
|
|
|
"$0" branch
|
|
|
|
;;
|
|
|
|
branch)
|
2010-03-20 13:23:39 +00:00
|
|
|
remote=$1
|
|
|
|
branch=$2
|
|
|
|
if [ -z "$branch" ]; then
|
|
|
|
branch=$remote
|
|
|
|
remote=origin
|
|
|
|
fi
|
|
|
|
if [ -z "$branch" ]; then
|
2010-03-20 13:14:50 +00:00
|
|
|
for d in $repos; do
|
|
|
|
cd "$d0/$d"
|
|
|
|
r=`git symbolic-ref HEAD`
|
|
|
|
r=${r#refs/heads/}
|
|
|
|
echo "$d is at $r"
|
|
|
|
cd "$d0"
|
|
|
|
done
|
|
|
|
else
|
|
|
|
for d in $repos; do
|
|
|
|
cd "$d0/$d"
|
|
|
|
a=
|
|
|
|
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
|
|
|
|
echo "Branch in $d?"
|
|
|
|
read -r a
|
|
|
|
done
|
2010-03-20 13:23:39 +00:00
|
|
|
if [ x"$a" = x"y" ]; then
|
|
|
|
git push "$remote" HEAD:"$branch"
|
|
|
|
git checkout --track -b "$branch" "$remote/$branch"
|
2010-03-20 13:14:50 +00:00
|
|
|
fi
|
|
|
|
cd "$d0"
|
|
|
|
done
|
|
|
|
"$0" branch
|
|
|
|
fi
|
2010-03-18 15:46:07 +00:00
|
|
|
;;
|
|
|
|
branches)
|
|
|
|
for d in $repos; do
|
|
|
|
cd "$d0/$d"
|
|
|
|
echo "In $d:"
|
|
|
|
git branch -a | sed 's/^/ /'
|
|
|
|
cd "$d0"
|
|
|
|
done
|
|
|
|
;;
|
2010-03-20 13:20:07 +00:00
|
|
|
push)
|
|
|
|
for d in $repos; do
|
|
|
|
cd "$d0/$d"
|
|
|
|
r=`git symbolic-ref HEAD`
|
|
|
|
r=${r#refs/heads/}
|
|
|
|
a=
|
2010-03-20 13:23:39 +00:00
|
|
|
if git log "origin/$r".."$r" | grep .; then
|
|
|
|
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
|
|
|
|
echo "Push $r in $d?"
|
|
|
|
read -r a
|
|
|
|
done
|
|
|
|
if [ x"$a" = x"y" ]; then
|
|
|
|
git push `git config "branch.$r.remote" || echo origin` HEAD
|
|
|
|
fi
|
2010-03-20 13:20:07 +00:00
|
|
|
fi
|
|
|
|
cd "$d0"
|
|
|
|
done
|
|
|
|
;;
|
2010-03-18 15:46:07 +00:00
|
|
|
*)
|
|
|
|
echo "Usage:"
|
2010-03-20 13:20:07 +00:00
|
|
|
echo " $0 pull"
|
|
|
|
echo " $0 push"
|
2010-03-18 15:46:07 +00:00
|
|
|
echo " $0 branches"
|
2010-03-20 13:20:07 +00:00
|
|
|
echo " $0 branch"
|
2010-03-18 15:46:07 +00:00
|
|
|
echo " $0 checkout"
|
|
|
|
;;
|
|
|
|
esac
|