+ if "$SELF" compile && yesno "Still merge \"$1/$2\" into `git symbolic-ref HEAD` of $d? Maybe you want to test first."; then
+ git push origin HEAD
+ git push "$1" :"$2"
+ else
+ git reset --hard HEAD@{1}
+ fi
+ fi
+ done
+ ;;
+ admin-merge-2)
+ t=`mktemp`
+ report=""
+ reportecho()
+ {
+ report=$report"$*$LF"
+ echo "$*"
+ }
+ reportecho4()
+ {
+ report=$report" $*$LF"
+ echo " $*"
+ }
+ reportdo4()
+ {
+ o=`"$@" | sed 's/^/ /' || true`
+ reportecho "$o"
+ }
+ for d in $repos; do
+ enter "$d0/$d" verbose
+ base="`repobranch "$d"`"
+ reportecho "In $d:"
+ for ref in `git for-each-ref --format='%(refname)' refs/remotes/origin/`; do
+ case "${ref#refs/remotes/origin/}" in
+ "$base")
+ continue
+ ;;
+ HEAD|master)
+ continue
+ ;;
+ esac
+ reportecho " Branch $ref:"
+ note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
+ logdata=`git log --color "$base".."$ref"`
+ diffdata=`git diff --color --find-copies-harder --ignore-space-change "$base"..."$ref"`
+ if [ -z "$logdata" ]; then
+ reportecho4 "--> not merging, no changes vs master"
+ elif [ -z "$diffdata" ]; then
+ reportecho4 "--> not merging, no changes vs master, branch contains redundant history"
+ if yesno "Branch \"$ref\" probably should get deleted. Do it?" '{ echo "$logdata"; } | less -r'; then
+ git push origin :"${ref#refs/remotes/origin/}"
+ reportecho4 "--> branch deleted"
+ fi
+ elif [ -n "$note" ]; then
+ reportdo4 echo "$note"
+ reportecho4 "--> not merging, already had this one rejected before"
+ elif yesno "Branch \"$ref\" may want to get merged. Do it?" '{ echo "$logdata"; echo "$diffdata"; } | less -r'; then
+ git checkout "$base"
+ org=`git rev-parse HEAD`
+ if ! git merge "$ref" 2>&1 | tee "$t"; then
+ git reset --hard "$org"
+ GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Merge failed:$LF`cat "$t"`" "$ref"
+ reportdo4 cat "$t"
+ reportecho4 "--> merge failed"
+ elif ! "$SELF" compile 2>&1 | tee "$t"; then
+ git reset --hard "$org"
+ GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Compile failed:$LF`cat "$t"`" "$ref"
+ reportdo4 cat "$t"
+ reportecho4 "--> compile failed"
+ elif ! yesno "Still merge \"$ref\" into `git symbolic-ref HEAD` of $d? Maybe you want to test first."; then
+ git reset --hard "$org"
+ git notes edit "$ref"
+ note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
+ reportdo4 echo "$note"
+ reportecho4 "--> test failed"
+ else
+ case ",`repoflags "$d"`," in
+ *,svn,*)
+ # we do quite a mess here... luckily we know $org
+ git pull # svn needs to be current
+ git rebase -i --onto master "$org"
+ git svn dcommit --add-author-from
+ git reset --hard "$org"
+ ;;
+ *)
+ git push origin HEAD
+ ;;
+ esac
+ reportecho4 "--> MERGED"
+ if yesno "Delete original branch \"$ref\"?"; then
+ git push origin :"${ref#refs/remotes/origin/}"
+ reportecho4 "--> branch deleted"
+ fi
+ fi
+ else
+ GIT_NOTES_REF=refs/notes/admin-merge git notes edit "$ref"
+ note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
+ if [ -n "$note" ]; then
+ reportdo4 echo "$note"
+ reportecho4 "--> rejected"
+ else
+ reportecho4 "--> postponed"
+ fi
+ fi
+ reportecho ""
+ done
+ reportecho ""
+ done
+ rm -f "$t"
+ echo "$report" | ssh nexuiz@rm.endoftheinternet.org cat '>>' public_html/xonotic-merge-notes.txt
+ ;;
+
+ # release building goes here
+ release-mkdir)
+ mkdir -p Xonotic/"$1"
+ ;;
+ release-prepare)
+#"$SELF" each git clean -fxd
+ mkdir -p Xonotic
+ "$SELF" release-copy Docs/
+ "$SELF" release-copy misc/
+ "$SELF" release-copy server/
+ "$SELF" release-copy xonotic-linux-glx.sh
+ "$SELF" release-copy xonotic-linux-sdl.sh
+ "$SELF" release-mkdir data
+ "$SELF" release-mkdir fteqcc
+ ;;
+ release-copy)
+ rsync --exclude=.git -vaSHPAX "$1" Xonotic/"$1"
+ ;;
+ release-compile-run)
+ host=$1
+ buildpath=$2
+ maketargets=$3
+ makeflags=$4
+ srcdir=$5
+ targetfiles=$6
+ rsync --delete -zvaSHPAX "$srcdir"/ "$host:$buildpath/"
+ ssh "$host" ". ~/.profile && cd $buildpath && make clean $maketargets $makeflags"
+ for f in $targetfiles; do
+ rsync -zvaSHPAX "$host:$buildpath/${f%:*}" "${f##*:}"
+ done
+ ;;
+ release-compile)
+ suffix=$1
+ makeflags=$2
+ fteqcc_maketargets=$3
+ fteqcc_files=$4
+ darkplaces_maketargets=$5
+ darkplaces_files=$6
+ "$SELF" release-compile-run "xonotic-build-$suffix" /tmp/fteqcc.build."$suffix" "$fteqcc_maketargets" "$makeflags" "fteqcc" "$fteqcc_files"
+ "$SELF" release-compile-run "xonotic-build-$suffix" /tmp/Darkplaces.build."$suffix" "$darkplaces_maketargets" "$makeflags" "fteqcc" "$darkplaces_files"
+ ;;
+ release-engine-win32)
+ rsync --exclude=.git -vaSHPAX Xonotic/misc/buildfiles/w32/* Xonotic/
+ "$SELF" release-compile win32 \
+ '"DP_MAKE_TARGET=mingw CC="$HOME/mingw32/bin/i386-mingw32-gcc -g -DSUPPORTDIRECTX -DUSE_WSPIAPI_H -I$HOME/dxheaders" WINDRES="$HOME/mingw32/bin/i386-mingw32-windres" SDL_CONFIG="$HOME/sdl-win32/SDL-1.2.13/bin/sdl-config"' \
+ win 'fteqcc.exe:Xonotic/fteqcc/fteqcc.exe' \
+ debug 'darkplaces.exe:xonotic.exe darkplaces-sdl.exe:xonotic-sdl.exe darkplaces-dedicated.exe:xonotic-dedicated.exe'
+ ;;
+ release-engine-osx)
+ rsync --exclude=.git -vaSHPAX Xonotic/misc/buildfiles/osx/* Xonotic/
+ "$SELF" release-compile osx \
+ 'CC="gcc -g -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4"' \
+ all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.osx' \
+ sdl-debug 'darkplaces-sdl:Xonotic/Xonotic-SDL.app/Contents/MacOS/xonotic-osx-sdl-bin'
+ ;;
+ release-engine-linux32)
+ "$SELF" release-compile linux32 \
+ 'CC="gcc -g -Wl,--hash-style=sysv" DP_MODPLUG_STATIC_LIBDIR=$HOME/modplug-i386/lib DP_LINK_TO_LIBJPEG=1 LDFLAGS_LIBJPEG="$HOME/jpeg7/lib/libjpeg.a" CFLAGS_LIBJPEG="-I$HOME/jpeg7/include"' \
+ all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux32' \
+ debug 'darkplaces-glx:Xonotic/xonotic-linux-linux32-glx darkplaces-sdl:Xonotic/xonotic-linux-linux32-sdl darkplaces-dedicated:Xonotic/xonotic-linux-linux32-dedicated'
+ ;;
+ release-engine-linux64)
+ "$SELF" release-compile linux64 \
+ 'CC="gcc -g -Wl,--hash-style=sysv" DP_MODPLUG_STATIC_LIBDIR=$HOME/modplug-x86_64/lib DP_LINK_TO_LIBJPEG=1 LDFLAGS_LIBJPEG="$HOME/jpeg7/lib/libjpeg.a" CFLAGS_LIBJPEG="-I$HOME/jpeg7/include"' \
+ all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux64' \
+ debug 'darkplaces-glx:Xonotic/xonotic-linux-linux64-glx darkplaces-sdl:Xonotic/xonotic-linux-linux64-sdl darkplaces-dedicated:Xonotic/xonotic-linux-linux64-dedicated'
+ ;;
+ release-engine)
+ "$SELF" release-engine-win32
+ "$SELF" release-engine-osx
+ "$SELF" release-engine-linux32
+ "$SELF" release-engine-linux64
+ ;;
+ release-maps)
+ "$SELF" update-maps
+ for X in data/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do
+ if [ -f "$X" ]; then
+ cd Xonotic/data/xonotic-maps.pk3dir
+ unzip ../../../"$X"
+ cd ../../..