X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fxonotic.git;a=blobdiff_plain;f=all;h=d022eb0d31b0801ffdf9c0ba4f07936e1b40769e;hp=96cd3b5b05ac8c45a92f95491036ea1772004cc6;hb=e2c342030c7919f2d5f434592bf7e0ef6e436139;hpb=569e49c5d616ee6dce9c044bf892ef58985c4531 diff --git a/all b/all index 96cd3b5b..d022eb0d 100755 --- a/all +++ b/all @@ -2,6 +2,16 @@ # vim: filetype=zsh set -e +if [ -n "$ZSH_VERSION" ]; then + setopt SH_WORD_SPLIT +fi +if [ -z "$ECHO" ]; then + if echo "\\\\" | grep .. >/dev/null; then + ECHO=echo + else + ECHO=`which echo` + fi +fi # I use this in EVERY shell script ;) LF=" @@ -11,8 +21,8 @@ ESC="" d00=`pwd` while ! [ -f ./all ]; do if [ x"`pwd`" = x"/" ]; then - echo "Cannot find myself." - echo "Please run this script with the working directory inside a Xonotic checkout." + $ECHO "Cannot find myself." + $ECHO "Please run this script with the working directory inside a Xonotic checkout." exit 1 fi cd .. @@ -36,7 +46,7 @@ esac msg() { - echo >&2 "$ESC[1m$*$ESC[m" + $ECHO >&2 "$ESC""[1m$*$ESC""[m" } self=`git hash-object "$SELF"` @@ -67,10 +77,10 @@ visible_repo_name() { case "$1" in .) - echo "the root directory" + $ECHO "the root directory" ;; *) - echo "\"$1\"" + $ECHO "\"$1\"" ;; esac } @@ -78,16 +88,16 @@ visible_repo_name() check_mergeconflict() { if git ls-files -u | grep ' 1 '; then - echo - echo "MERGE CONFLICT." - echo "change into the \"$1\" project directory, and then:" - echo "- edit the files mentioned above with your favorite editor," - echo " and fix the conflicts (marked with <<<<<<< blocks)" - echo "- for binary files, you can select the files using" - echo " git checkout --ours or git checkout --theirs" - echo "- when done with a file, 'git add' the file" - echo "- when done, 'git commit'" - echo + $ECHO + $ECHO "MERGE CONFLICT." + $ECHO "change into the \"$1\" project directory, and then:" + $ECHO "- edit the files mentioned above with your favorite editor," + $ECHO " and fix the conflicts (marked with <<<<<<< blocks)" + $ECHO "- for binary files, you can select the files using" + $ECHO " git checkout --ours or git checkout --theirs" + $ECHO "- when done with a file, 'git add' the file" + $ECHO "- when done, 'git commit'" + $ECHO exit 1 fi } @@ -97,7 +107,7 @@ yesno() yesno= while [ x"$yesno" != x"y" -a x"$yesno" != x"n" ]; do eval "$2" - echo "$1" + $ECHO "$1" IFS= read -r yesno done [ x"$yesno" = x"y" ] @@ -110,21 +120,21 @@ enter() } repos_urls=" -. | | master | -data/xonotic-data.pk3dir | | master | -data/xonotic-music.pk3dir | | master | -data/xonotic-nexcompat.pk3dir | | master | no -darkplaces | | div0-stable | svn -netradiant | | master | -div0-gittools | | master | no -d0_blind_id | git://github.com/divVerent/d0_blind_id.git | master | -data/xonotic-maps.pk3dir | | master | -mediasource | | master | no -fteqcc | git://github.com/Blub/qclib.git | master | +. | | master | +data/xonotic-data.pk3dir | | master | +data/xonotic-music.pk3dir | | master | +data/xonotic-nexcompat.pk3dir | | master | no +darkplaces | | div0-stable | svn +netradiant | | master | +div0-gittools | | master | no +d0_blind_id | | master | +data/xonotic-maps.pk3dir | | master | +mediasource | | master | no +fteqcc | | xonotic-stable | noautocrlf " # todo: in darkplaces, change repobranch to div0-stable -repos=`echo "$repos_urls" | grep . | cut -d '|' -f 1 | tr -d ' '` +repos=`$ECHO "$repos_urls" | grep . | cut -d '|' -f 1 | tr -d ' '` base=`git config remote.origin.url` case "$base" in @@ -132,7 +142,7 @@ case "$base" in base=${base%xonotic.git} ;; *) - echo "The main repo is not xonotic.git, what have you done?" + $ECHO "The main repo is not xonotic.git, what have you done?" exit 1 ;; esac @@ -144,28 +154,28 @@ case "$pushbase" in '') ;; *) - echo "The main repo is not xonotic.git, what have you done?" + $ECHO "The main repo is not xonotic.git, what have you done?" exit 1 ;; esac repourl() { - repo_t=`echo "$repos_urls" | grep "^$1 " | cut -d '|' -f 2 | tr -d ' '` + repo_t=`$ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 2 | tr -d ' '` if [ -n "$repo_t" ]; then case "$repo_t" in *://*) - echo "$repo_t" + $ECHO "$repo_t" ;; *) - echo "$base$repo_t" + $ECHO "$base$repo_t" ;; esac else if [ x"$1" = x"." ]; then - echo "$base""xonotic.git" + $ECHO "$base""xonotic.git" else - echo "$base${1##*/}.git" + $ECHO "$base${1##*/}.git" fi fi } @@ -173,37 +183,37 @@ repourl() repopushurl() { [ -n "$pushbase" ] || return 0 - repo_t=`echo "$repos_urls" | grep "^$1 " | cut -d '|' -f 2 | tr -d ' '` + repo_t=`$ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 2 | tr -d ' '` if [ -n "$repo_t" ]; then case "$repo_t" in *://*) ;; *) - echo "$pushbase$repo_t" + $ECHO "$pushbase$repo_t" ;; esac else if [ x"$1" = x"." ]; then - echo "$pushbase""xonotic.git" + $ECHO "$pushbase""xonotic.git" else - echo "$pushbase${1##*/}.git" + $ECHO "$pushbase${1##*/}.git" fi fi } repobranch() { - repo_t=`echo "$repos_urls" | grep "^$1 " | cut -d '|' -f 3 | tr -d ' '` + repo_t=`$ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 3 | tr -d ' '` if [ -n "$repo_t" ]; then - echo "$repo_t" + $ECHO "$repo_t" else - echo "master" + $ECHO "master" fi } repoflags() { - echo "$repos_urls" | grep "^$1 " | cut -d '|' -f 4 | tr -d ' ' + $ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 4 | tr -d ' ' } listrepos() @@ -214,13 +224,13 @@ listrepos() # if we have the dir, always keep it if [ -d "$d" ]; then msg "Repository $d enabled because it already exists" - echo "$d" + $ECHO "$d" continue fi # if .yes file exists, always keep it if [ -f "$d.yes" ]; then msg "Repository $d enabled by a .yes file" - echo "$d" + $ECHO "$d" continue fi # if we have .no file, skip @@ -242,7 +252,7 @@ listrepos() esac # default: enable msg "Repository $d enabled by default" - echo "$d" + $ECHO "$d" done } @@ -268,9 +278,9 @@ fix_upstream_rebase() r_l_other=`git log --pretty="format:%s" "$r_me".."$r_other" | grep -v "^Merge" | sort -u` # heuristics: upstream rebase/filter-branch if more than 50% of the commits of one of the sides are in the other too - r_lc_me=`echo "$r_l_me" | wc -l` - r_lc_other=`echo "$r_l_other" | wc -l` - r_lc_together=`{ echo "$r_l_me"; echo "$r_l_other"; } | sort -u | wc -l` + r_lc_me=`$ECHO "$r_l_me" | wc -l` + r_lc_other=`$ECHO "$r_l_other" | wc -l` + r_lc_together=`{ $ECHO "$r_l_me"; $ECHO "$r_l_other"; } | sort -u | wc -l` r_lc_same=$(($r_lc_me + $r_lc_other - $r_lc_together)) if [ $(( $r_lc_same * 2 )) -gt $(( $r_lc_me )) ] || [ $(( $r_lc_same * 2 )) -gt $(( $r_lc_other )) ]; then @@ -308,10 +318,19 @@ fix_git_config() verbose git config --unset remote.origin.pushurl || true fi verbose git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" - verbose git config core.autocrlf input - if [ -z "`git config push.default`" ]; then + case ",`repoflags "$d"`," in + *,noautocrlf,*) + verbose git config --unset core.autocrlf || true + ;; + *) + verbose git config core.autocrlf input + ;; + esac + if [ -z "`git config push.default || true`" ]; then verbose git config push.default current # or is tracking better? fi + verbose git config filter.mapclean.clean "tr -d '\r' | grep '^[^/]'" + verbose git config filter.mapclean.smudge "cat" } mkzip() @@ -330,6 +349,47 @@ mkzip0() zip -0y "$@" } +mirrorspeed() +{ + # first result is to be ignored, but we use it to check status + git ls-remote "$1" refs/heads/master >/dev/null 2>&1 || return 1 + { time -p git ls-remote "$1" refs/heads/master; } 2>&1 >/dev/null | head -n 1 | cut -d ' ' -f 2 | tr -d . | sed 's,^0*,,' + # unit: clock ticks (depends on what "time" returns +} + +bestmirror() +{ + pre=$1; shift + suf=$1; shift + + if ! { time -p true; } >/dev/null 2>&1; then + return 1 + fi + + bestin= + bestt= + for in in "$@"; do + m=$pre$in$suf + if t=`mirrorspeed "$m"`; then + msg "$m -> $t ticks" + if [ -n "$t" ]; then + if [ -z "$bestt" ] || [ "$t" -lt "$bestt" ]; then + bestin=$in + bestt=$t + fi + fi + else + msg "$m -> FAIL" + fi + done + if [ -n "$bestin" ]; then + msg "Best mirror seems to be $pre$bestin$suf" + $ECHO "$bestin" + else + return 1 + fi +} + case "$cmd" in fix_upstream_rebase) for d in $repos; do @@ -362,9 +422,12 @@ case "$cmd" in msg "To get access, your key has to be approved first. For that, visit" msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on" msg "the \"Support\" tracker in the \"Repository\" category where you" - msg "apply for access and paste the following output into the ticket:" + msg "apply for access and paste the following output into the issue:" msg "" msg "`cat ~/.ssh/id_rsa.pub`" + msg "" + msg "Note that you will only have write access to branches that start" + msg "with your user name." elif [ -f ~/.ssh/id_dsa.pub ]; then msg "" msg "A key already exists and no new one will be generated. If you" @@ -374,28 +437,36 @@ case "$cmd" in msg "To get access, your key has to be approved first. For that, visit" msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on" msg "the \"Support\" tracker in the \"Repository\" category where you" - msg "apply for access and paste the following output into the ticket:" + msg "apply for access and paste the following output into the issue:" msg "" msg "`cat ~/.ssh/id_dsa.pub`" + msg "" + msg "Note that you will only have write access to branches that start" + msg "with your user name." else msg "" msg "No key has been generated yet. One will be generated now." msg "If other people are using your computer, it is recommended" - msg "to specify a passphrase." + msg "to specify a passphrase. Otherwise you can simply hit ENTER" + msg "when asked for a passphrase." msg "" - ssh-keygen -t rsa -b 4096 + ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa msg "" msg "To get access, your key has to be approved first. For that, visit" msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on" msg "the \"Support\" tracker in the \"Repository\" category where you" - msg "apply for access and paste the following output into the ticket:" + msg "apply for access and paste the following output into the issue:" msg "" msg "`cat ~/.ssh/id_rsa.pub`" + msg "" + msg "Note that you will only have write access to branches that start" + msg "with your user name." fi ;; update|pull) allow_pull=true fix_config=false + location=current while :; do if [ x"$1" = x"-N" ]; then allow_pull=false @@ -414,11 +485,70 @@ case "$cmd" in elif [ x"$1" = x"-h" ]; then fix_config=true base=http://git.xonotic.org/xonotic/ + elif [ x"$1" = x"-l" ]; then + case "$2" in + nl) ;; + de) ;; + best) ;; + default) ;; + *) + msg "Invalid location!" + msg "Possible locations for the -l option:" + msg " nl (Netherlands, run by merlijn)" + msg " de (Germany, run by divVerent)" + msg " best (find automatically)" + msg " default (currently nl)" + exit 1 + ;; + esac + fix_config=true + location=$2 + shift else break fi shift done + case "$location" in + best) + newbase=`$ECHO "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,:// .git.xonotic.org/,"` + case "$newbase" in + *\ *) + if location=`bestmirror $newbase"xonotic.git" de nl`; then + : + else + location=current + fi + ;; + *) + location=current + ;; + esac + ;; + esac + case "$location" in + default) + location= + ;; + current) + case "$base" in + *://*.git.xonotic.org/*) + location=${base%%.git.xonotic.org/*} + location=${location##*://} + ;; + *) + location= + ;; + esac + ;; + esac + if [ -n "$location" ]; then + base=`$ECHO "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,://$location.git.xonotic.org/,"` + pushbase=`$ECHO "$pushbase" | sed "s,://\(.*\.\)\?git.xonotic.org/,://$location.git.xonotic.org/,"` + else + base=`$ECHO "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,://git.xonotic.org/,"` + pushbase=`$ECHO "$pushbase" | sed "s,://\(.*\.\)\?git.xonotic.org/,://git.xonotic.org/,"` + fi if $fix_config; then url=`repourl .` pushurl=`repopushurl .` @@ -440,7 +570,7 @@ case "$cmd" in if ! verbose git pull; then fix_upstream_rebase_mergefail || true check_mergeconflict "$d" - echo "Pulling failed. Press ENTER to continue, or Ctrl-C to abort." + $ECHO "Pulling failed. Press ENTER to continue, or Ctrl-C to abort." read -r DUMMY else fix_upstream_rebase_mergeok || true @@ -506,7 +636,7 @@ case "$cmd" in exists=true verbose git checkout $checkoutflags --track -b "$b" "$remote/$b" else - echo "WTF? Not even branch $b doesn't exist in $d" + $ECHO "WTF? Not even branch $b doesn't exist in $d" exit 1 fi fi @@ -515,7 +645,7 @@ case "$cmd" in cd "$d0" done if ! $exists; then - echo "The requested branch was not found in any repository." + $ECHO "The requested branch was not found in any repository." fi exec "$SELF" branch ;; @@ -532,7 +662,7 @@ case "$cmd" in enter "$d0/$d" r=`git symbolic-ref HEAD` r=${r#refs/heads/} - echo "$d is at $r" + $ECHO "$d is at $r" cd "$d0" done else @@ -540,7 +670,7 @@ case "$cmd" in dv=`visible_repo_name "$d"` enter "$d0/$d" verbose if git rev-parse "refs/heads/$branch" >/dev/null 2>&1; then - echo "Already having this branch in $dv." + $ECHO "Already having this branch in $dv." else if yesno "Branch in $dv?"; then if [ -n "$srcbranch" ]; then @@ -576,17 +706,17 @@ case "$cmd" in continue fi BRANCH=${BRANCH#remotes/} - ID=`echo "$BRANCH" | tr -c "A-Za-z0-9." "_"` + ID=`$ECHO "$BRANCH" | tr -c "A-Za-z0-9." "_"` branches_list="$branches_list $BRANCH" # TEH SORT MAKEZ IT UNIEQ eval "r=\$branches_repos_$ID" r="$r $d" eval "branches_repos_$ID=\$r" done - echo -n "$branches_list" | xargs -n 1 echo | sort -u | while IFS= read -r BRANCH; do - ID=`echo "$BRANCH" | tr -c "A-Za-z0-9." "_"` + $ECHO -n "$branches_list" | xargs -n 1 $ECHO | sort -u | while IFS= read -r BRANCH; do + ID=`$ECHO "$BRANCH" | tr -c "A-Za-z0-9." "_"` eval "r=\$branches_repos_$ID" printf "%-60s %s\n" "$BRANCH" "$r" - #echo "$BRANCH: $r" + #$ECHO "$BRANCH: $r" done } ;; @@ -618,19 +748,19 @@ case "$cmd" in diffdata=`git diff --color HEAD` if [ -n "$diffdata" ]; then # we have uncommitted changes - if yesno "Uncommitted changes in \"$r\" in $dv. Commit?" 'echo "$diffdata" | less -r'; then + if yesno "Uncommitted changes in \"$r\" in $dv. Commit?" '$ECHO "$diffdata" | less -r'; then verbose git commit -a fi fi - rem=`git config "branch.$r.remote" || echo origin` - bra=`git config "branch.$r.merge" || echo "$r"` + rem=`git config "branch.$r.remote" || $ECHO origin` + bra=`git config "branch.$r.merge" || $ECHO "$r"` upstream="$rem/${bra#refs/heads/}" if ! git rev-parse "$upstream" >/dev/null 2>&1; then upstream="origin/`repobranch "$d"`" fi logdata=`git log --color "$upstream".."$r"` if [ -n "$logdata" ]; then - if yesno "Push \"$r\" in $dv?" 'echo "$logdata" | less -r'; then + if yesno "Push \"$r\" in $dv?" '$ECHO "$logdata" | less -r'; then verbose git push "$rem" HEAD fi fi @@ -651,6 +781,7 @@ case "$cmd" in cleanqc=false compiled0=false debug=debug + snowleopardhack=false if [ -z "$CC" ]; then export CC="gcc -DSUPPORTIPV6" fi @@ -658,6 +789,7 @@ case "$cmd" in case "$1" in -0) compiled0=true + shift ;; -c) cleand0=true @@ -668,7 +800,17 @@ case "$cmd" in ;; -r) debug=release - export CC="$CC -g -mtune=native -march=native" + export CC="$CC -g" + case "`$CC -dumpversion`" in + [5-9]*|[1-9][0-9]*|4.[3-9]*|4.[1-9][0-9]*) + # gcc 4.3 or higher + # -march=native is broken < 4.3 + export CC="$CC -mtune=native -march=native" + ;; + esac + if [ -n "$WE_HATE_OUR_USERS" ]; then + export CC="$CC -fno-common" + fi shift ;; *) @@ -685,10 +827,11 @@ case "$cmd" in ;; *) # AGL cannot be compiled on systems with a kernel > 10.x (Snow Leopard) + snowleopardhack=true TARGETS="sv-$debug sdl-$debug" ;; esac - export CC="$CC -I$PWD/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks/SDL.framework/Headers -F$PWD/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks" + export CC="$CC -fno-reorder-blocks -I$PWD/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks/SDL.framework/Headers -F$PWD/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks" else TARGETS="sv-$debug cl-$debug sdl-$debug" fi @@ -706,7 +849,13 @@ case "$cmd" in sdl) TARGETS="$TARGETS sdl-debug" ;; - glx|agl|wgl) + agl) + TARGETS="$TARGETS cl-debug" + if $snowleopardhack; then + export CC="$CC -arch i386" + fi + ;; + glx|wgl) TARGETS="$TARGETS cl-debug" ;; dedicated) @@ -793,13 +942,14 @@ case "$cmd" in enter "$d0/data/xonotic-data.pk3dir" verbose if $cleanqc; then - verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" "$@" $MAKEFLAGS clean + verbose make FTEQCC="../../../../fteqcc/fteqcc.bin" "$@" $MAKEFLAGS clean fi - verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" "$@" $MAKEFLAGS + verbose make FTEQCC="../../../../fteqcc/fteqcc.bin" "$@" $MAKEFLAGS + # 4 levels up: data, xonotic-data, qcsrc, server enter "$d0/darkplaces" verbose if [ x"$BAD_TARGETS" = x" " ]; then - echo "Warning: invalid empty client, default clients will be used." + $ECHO "Warning: invalid empty client, default clients will be used." fi if $cleandp; then verbose make $MAKEFLAGS clean @@ -808,7 +958,7 @@ case "$cmd" in verbose make $MAKEFLAGS STRIP=: "$@" "$T" done for T in $BAD_TARGETS; do - echo "Warning: discarded invalid client $T." + $ECHO "Warning: discarded invalid client $T." done verbose "$SELF" update-maps @@ -839,7 +989,7 @@ case "$cmd" in if [ -x "darkplaces/darkplaces$client.exe" ]; then client=$client.exe else - echo "Client darkplaces/darkplaces$client not found, aborting" + $ECHO "Client darkplaces/darkplaces$client not found, aborting" exit 1 fi fi @@ -873,8 +1023,8 @@ case "$cmd" in # # somehow send it # rm -f xonotic.core.tar.gz else - echo "The core dump can be examined later by" - echo " gdb $binary xonotic.core" + $ECHO "The core dump can be examined later by" + $ECHO " gdb $binary xonotic.core" fi fi ;; @@ -919,10 +1069,10 @@ case "$cmd" in continue fi if git format-patch -o "$patchdir/$i" "$UPSTREAM".."$BRANCH"; then - echo "$d" > "$patchdir/$i/info.txt" - echo "$BRANCH" >> "$patchdir/$i/info.txt" - echo "$UPSTREAM" >> "$patchdir/$i/info.txt" - echo "$TRACK" >> "$patchdir/$i/info.txt" + $ECHO "$d" > "$patchdir/$i/info.txt" + $ECHO "$BRANCH" >> "$patchdir/$i/info.txt" + $ECHO "$UPSTREAM" >> "$patchdir/$i/info.txt" + $ECHO "$TRACK" >> "$patchdir/$i/info.txt" i=$(($i+1)) else rm -rf "$patchdir/$i" @@ -963,12 +1113,12 @@ case "$cmd" in reportecho() { report=$report"$*$LF" - echo "$*" + $ECHO "$*" } reportecho4() { report=$report" $*$LF" - echo " $*" + $ECHO " $*" } reportdo4() { @@ -976,6 +1126,12 @@ case "$cmd" in reportecho "$o" } for d in $repos; do + case "$d" in + fteqcc) + # sorry, fteqcc repo is managed manually + continue + ;; + esac enter "$d0/$d" verbose base="`repobranch "$d"`" reportecho "In $d:" @@ -1025,14 +1181,14 @@ case "$cmd" in diffdata=`git diff --color --find-copies-harder --ignore-space-change "$realbase"..."$ref"` if [ -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 + 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 [ -z "$branch" ] && [ -n "$note" ]; then - reportdo4 echo "$note" + 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 + elif yesno "Branch \"$ref\" may want to get merged. Do it?" '{ $ECHO "$logdata"; $ECHO "$diffdata"; } | less -r'; then git checkout "$realbase" org=`git rev-parse HEAD` if ! git merge --no-ff "$ref" 2>&1 | tee "$t" && ! { git ls-files -u | grep ' 1 ' >/dev/null; }; then @@ -1053,13 +1209,18 @@ case "$cmd" in git push origin :"${ref#refs/remotes/origin/}" reportecho4 "--> test failed, branch deleted" elif [ -n "$note" ]; then - reportdo4 echo "$note" + reportdo4 $ECHO "$note" reportecho4 "--> test failed" else reportecho4 "--> test failed, postponed" fi else - echo "MERGING" + # apply crlf, or other cleanup filters (non-behavioural changes) + git reset --hard + find . -type f -exec touch {} \; + git commit -a --amend -C HEAD || true # don't fail if nothing to commit + + $ECHO "MERGING" case ",`repoflags "$d"`," in *,svn,*) # we do quite a mess here... luckily we know $org @@ -1085,7 +1246,7 @@ case "$cmd" in git push origin :"${ref#refs/remotes/origin/}" reportecho4 "--> branch deleted" elif [ -n "$note" ]; then - reportdo4 echo "$note" + reportdo4 $ECHO "$note" reportecho4 "--> rejected" else reportecho4 "--> postponed" @@ -1097,7 +1258,7 @@ case "$cmd" in reportecho "" done rm -f "$t" - echo "$report" | ssh nexuiz@rm.endoftheinternet.org cat '>>' public_html/xonotic-merge-notes.txt + $ECHO "$report" | ssh nexuiz@rm.endoftheinternet.org cat '>>' public_html/xonotic-merge-notes.txt ;; clean) "$SELF" fix_config @@ -1112,36 +1273,49 @@ case "$cmd" in # ./all clean [-m] [-f | -fu | -fU] [-r] [-D] # ./all clean --reclone found=false - while :; do - if [ x"$1" = x"--reclone" ]; then + for X in "$@"; do + if [ x"$X" = x"--reclone" ]; then force=true fetchupstream=true gotoupstream=true gotomaster=true rmuntracked=true killbranches=true - elif [ x"$1" = x"-f" ]; then + elif [ x"$X" = x"-f" ]; then force=true - elif [ x"$1" = x"-u" ]; then + elif [ x"$X" = x"-u" ]; then gotoupstream=true - elif [ x"$1" = x"-U" ]; then + elif [ x"$X" = x"-U" ]; then gotoupstream=true fetchupstream=true - elif [ x"$1" = x"-fu" ]; then + elif [ x"$X" = x"-fu" ]; then force=true gotoupstream=true - elif [ x"$1" = x"-fU" ]; then + elif [ x"$X" = x"-fU" ]; then force=true gotoupstream=true fetchupstream=true - elif [ x"$1" = x"-m" ]; then + elif [ x"$X" = x"-m" ]; then gotomaster=true - elif [ x"$1" = x"-r" ]; then + elif [ x"$X" = x"-r" ]; then rmuntracked=true - elif [ x"$1" = x"-D" ]; then + elif [ x"$X" = x"-D" ]; then killbranches=true + elif $ECHO "$X" | grep '^-FFFF*UUUU*$' >/dev/null; then + msg '' + msg " _____" + msg " ,--'-\\P/\`\\ FFFFFFF" + msg " __/_ B/,-.\\ FFFFFFF" + msg " / _\\ (// O\\\\ FFFFFF" + msg "| (O \`) _\\._ _)\\ FFFUU" + msg "| |___/.^d0~~\"\\ \\ UUUU" + msg "| |\`~' \\ | UUUU" + msg "| | __,C>|| UUUU" + msg "\\ /_ ,-/,-' | UUUU" + msg " \\\\_ \\_>~' / UUUU-" + msg '' else - break + msg "Unknown arg: $X" fi found=true shift @@ -1166,8 +1340,8 @@ case "$cmd" in else r=`git symbolic-ref HEAD` r=${r#refs/heads/} - rem=`git config "branch.$r.remote" || echo origin` - bra=`git config "branch.$r.merge" || echo "$r"` + rem=`git config "branch.$r.remote" || $ECHO origin` + bra=`git config "branch.$r.merge" || $ECHO "$r"` upstream="$rem/${bra#refs/heads/}" if $fetchupstream; then verbose git fetch "$rem" @@ -1207,6 +1381,7 @@ case "$cmd" in git rev-parse refs/heads/master >/dev/null 2>&1 || verbose git branch -t master origin/master || true git rev-parse "refs/heads/`repobranch "$d"`" >/dev/null 2>&1 || verbose git branch -t "`repobranch "$d"`" origin/"`repobranch "$d"`" || true fi + checkself "$cmd" "$@" done ;; @@ -1221,7 +1396,7 @@ case "$cmd" in msg "Building a RELEASE" ;; *) - echo >&2 -n "$ESC[2J$ESC[H" + $ECHO >&2 -n "$ESC[2J$ESC[H" msg "" msg "" msg "" @@ -1266,7 +1441,7 @@ case "$cmd" in verbose rm -rf Xonotic Xonotic*.zip verbose mkdir -p Xonotic if [ -n "$RELEASEDATE" ]; then - verbose echo "$RELEASEDATE" > Xonotic/stamp.txt + verbose $ECHO "$RELEASEDATE" > Xonotic/stamp.txt else verbose date +%Y%m%d > Xonotic/stamp.txt fi @@ -1341,18 +1516,18 @@ case "$cmd" in # now rebrand the binaries... for f in $targetfiles; do #verbose "$d0/misc/tools/rebrand-darkplaces-engine.sh" "${XONOTIC_BRAND:-$d0/misc/tools/xonotic.brand}" "${f##*:}" || true - case "$f" in + case "${f##*:}" in xonotic*.exe) - verbose "$d0/misc/tools/change-icon-of-exe.sh" "$d0/misc/logos/icons_ico/xonotic.ico" "$f" + verbose "$d0/misc/tools/change-icon-of-exe.sh" "$d0/misc/logos/icons_ico/xonotic.ico" "${f##*:}" ( d=`mktemp -d -t rebrand.XXXXXX` cd "$d" - echo "-mygames" > darkplaces.opt + $ECHO "-mygames" > darkplaces.opt zip -9r darkplaces.zip darkplaces.opt cat darkplaces.zip cd "$d0" rm -rf "$d" - ) >> "$f" + ) >> "${f##*:}" ;; esac done @@ -1431,10 +1606,11 @@ case "$cmd" in release-qc) case "$RELEASETYPE" in beta) - verbose make -C Xonotic/source FTEQCC="$d0/Xonotic/fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 clean all + verbose make -C Xonotic/source FTEQCC="../../../fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 clean all + # back out of: source/qcsrc/server ;; release) - verbose make -C Xonotic/source FTEQCC="$d0/Xonotic/fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 FTEQCCFLAGS_WATERMARK= clean all + verbose make -C Xonotic/source FTEQCC="../../../fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 FTEQCCFLAGS_WATERMARK= clean all ;; esac verbose rm -f Xonotic/source/*/fteqcc.log @@ -1462,7 +1638,7 @@ case "$cmd" in # music: reduce bitrate verbose export do_jpeg=true verbose export jpeg_qual_rgb=80 - verbose export jpeg_qual_a=95 + verbose export jpeg_qual_a=97 verbose export do_dds=false verbose export do_ogg=true verbose export ogg_qual=1 @@ -1477,7 +1653,7 @@ case "$cmd" in verbose export do_jpeg=false verbose export do_jpeg_if_not_dds=true verbose export jpeg_qual_rgb=80 - verbose export jpeg_qual_a=95 + verbose export jpeg_qual_a=99 verbose export do_dds=true verbose export dds_flags= verbose export do_ogg=true @@ -1568,8 +1744,8 @@ case "$cmd" in ;; release-pack) verbose "$SELF" release-buildpk3s data/font-nimbussansl.pk3dir raw '' - verbose "$SELF" release-buildpk3s data/xonotic-data.pk3dir normal '' raw '-raw' low '-low' lowdds '-lowdds' - verbose "$SELF" release-buildpk3s data/xonotic-maps.pk3dir normal '' raw '-raw' low '-low' lowdds '-lowdds' + verbose "$SELF" release-buildpk3s data/xonotic-data.pk3dir normal '' low '-low' lowdds '-lowdds' + verbose "$SELF" release-buildpk3s data/xonotic-maps.pk3dir normal '' low '-low' lowdds '-lowdds' verbose "$SELF" release-buildpk3s data/xonotic-music.pk3dir raw '' low '-low' verbose "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir low '' ;; @@ -1623,17 +1799,17 @@ case "$cmd" in Xonotic/data/xonotic-$stamp-data-low.pk3 \ Xonotic/data/xonotic-$stamp-maps-low.pk3 \ Xonotic/data/xonotic-$stamp-music-low.pk3 - verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp-lowdds.zip +# verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp-high.zip +# verbose mkzip0 Xonotic-$stamp-high.zip \ +# Xonotic/data/xonotic-$stamp-data-raw.pk3 \ +# Xonotic/data/xonotic-$stamp-maps-raw.pk3 \ +# Xonotic/data/xonotic-$stamp-music.pk3 \ +# Xonotic/data/xonotic-$stamp-nexcompat.pk3 + verbose mv Xonotic-$stamp-common.zip Xonotic-$stamp-lowdds.zip verbose mkzip0 Xonotic-$stamp-lowdds.zip \ Xonotic/data/xonotic-$stamp-data-lowdds.pk3 \ Xonotic/data/xonotic-$stamp-maps-lowdds.pk3 \ Xonotic/data/xonotic-$stamp-music-low.pk3 - verbose mv Xonotic-$stamp-common.zip Xonotic-$stamp-high.zip - verbose mkzip0 Xonotic-$stamp-high.zip \ - Xonotic/data/xonotic-$stamp-data-raw.pk3 \ - Xonotic/data/xonotic-$stamp-maps-raw.pk3 \ - Xonotic/data/xonotic-$stamp-music.pk3 \ - Xonotic/data/xonotic-$stamp-nexcompat.pk3 ;; release) verbose "$SELF" release-prepare @@ -1645,25 +1821,26 @@ case "$cmd" in ;; *) - echo "Usage:" - echo " $SELF admin-merge []" - echo " $SELF branch " - echo " $SELF branch []" - echo " $SELF branches" - echo " $SELF checkout|switch " - echo " $SELF checkout|switch /" - echo " $SELF clean [-m] [-f | -fu | -fU] [-r] [-D]" - echo " $SELF clean --reclone" - echo " $SELF compile [-c]" - echo " $SELF each|foreach [-k] command..." - echo " $SELF fix_upstream_rebase" - echo " $SELF merge" - echo " $SELF push|commit [-s]" - echo " $SELF release" - echo " $SELF restore-patches" - echo " $SELF run [sdl|glx|wgl|agl|dedicated] options..." - echo " $SELF save-patches" - echo " $SELF update-maps" - echo " $SELF update|pull [-N]" + $ECHO "Usage:" + $ECHO " $SELF admin-merge []" + $ECHO " $SELF branch " + $ECHO " $SELF branch []" + $ECHO " $SELF branches" + $ECHO " $SELF checkout|switch " + $ECHO " $SELF checkout|switch /" + $ECHO " $SELF clean [-m] [-f | -fu | -fU] [-r] [-D]" + $ECHO " $SELF clean --reclone" + $ECHO " $SELF compile [-c] [-r] [-0]" + $ECHO " $SELF each|foreach [-k] command..." + $ECHO " $SELF fix_upstream_rebase" + $ECHO " $SELF keygen" + $ECHO " $SELF merge" + $ECHO " $SELF push|commit [-s]" + $ECHO " $SELF release" + $ECHO " $SELF restore-patches" + $ECHO " $SELF run [sdl|glx|wgl|agl|dedicated] options..." + $ECHO " $SELF save-patches" + $ECHO " $SELF update-maps" + $ECHO " $SELF update|pull [-N] [-s | -h [-p] | -g [-p]] [-l de|nl|default]" ;; esac