case "$0" in
all|*/all)
case "`uname`" in
- MINGW*)
+ MINGW*|Win*)
# Windows hates users. So this script has to copy itself elsewhere first...
tname=
cp "$SELF" ../all.xonotic.sh
"$@"
}
+visible_repo_name()
+{
+ case "$1" in
+ .)
+ echo "the root directory"
+ ;;
+ *)
+ echo "\"$1\""
+ ;;
+ esac
+}
+
check_mergeconflict()
{
if git ls-files -u | grep ' 1 '; then
fi
;;
esac
- if ! verbose git pull; then
- check_mergeconflict "$d"
- # do not exit, as this may also mean we are tracking something else
+ verbose git config remote.origin.fetch "refs/heads/*:refs/remotes/origin/*"
+
+ r=`git symbolic-ref HEAD`
+ r=${r#refs/heads/}
+ if git config branch.$r.remote >/dev/null 2>&1; then
+ if ! verbose git pull; then
+ check_mergeconflict "$d"
+ exit 1 # FATAL
+ fi
fi
+
cd "$d00"
- checkself "$SELF" "$@"
+ checkself "$cmd" "$@"
cd "$d0/$d"
verbose git remote prune origin
cd "$d0"
verbose git checkout master
fi
cd "$d00"
- checkself "$SELF" "$@"
+ checkself "$cmd" "$@"
cd "$d0"
done
if ! $exists; then
branch)
remote=$1
branch=$2
+ srcbranch=$3
if [ -z "$branch" ]; then
branch=$remote
remote=origin
fi
+ if [ -z "$srcbranch" ]; then
+ srcbranch=master
+ fi
if [ -z "$branch" ]; then
for d in $repos; do
enter "$d0/$d"
done
else
for d in $repos; do
+ dv=`visible_repo_name "$d"`
enter "$d0/$d"
a=
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
- echo "Branch in \"$d\"?"
+ echo "Branch in $dv?"
read -r a
done
if [ x"$a" = x"y" ]; then
- verbose git push "$remote" HEAD:"$branch"
+ verbose git push "$remote" "$srcbranch":"$branch"
verbose git checkout --track -b "$branch" "$remote/$branch"
fi
cd "$d0"
;;
merge)
for d in $repos; do
+ dv=`visible_repo_name "$d"`
enter "$d0/$d"
r=`git symbolic-ref HEAD`
r=${r#refs/heads/}
# we have uncommitted changes
a=
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
- echo "Could merge from \"master\" into \"$r\" in \"$d\". Do it?"
+ echo "Could merge from \"master\" into \"$r\" in $dv. Do it?"
read -r a
done
if [ x"$a" = x"y" ]; then
cd "$d0"
done
;;
- push)
+ push|commit)
for d in $repos; do
+ dv=`visible_repo_name "$d"`
enter "$d0/$d"
r=`git symbolic-ref HEAD`
r=${r#refs/heads/}
# we have uncommitted changes
a=
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
- echo "Uncommitted changes in \"$r\" in \"$d\". Commit?"
+ echo "Uncommitted changes in \"$r\" in $dv. Commit?"
read -r a
done
if [ x"$a" = x"y" ]; then
if git log "origin/$r".."$r" | grep .; then
a=
while [ x"$a" != x"y" -a x"$a" != x"n" ]; do
- echo "Push \"$r\" in \"$d\"?"
+ echo "Push \"$r\" in $dv?"
read -r a
done
if [ x"$a" = x"y" ]; then
echo " $SELF push"
echo " $SELF branches"
echo " $SELF branch [<remote>] <branchname>"
+ echo " $SELF branch <remote> <branchname> <srcbranchname>"
echo " $SELF checkout [<remote>] <branchname>"
echo " $SELF compile"
echo " $SELF run <client> <options>"