autodetect whether a branch is based on master or on div0-stable; flag ./all compile...
authorRudolf Polzer <divverent@alientrap.org>
Fri, 2 Jul 2010 12:01:07 +0000 (14:01 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Fri, 2 Jul 2010 12:01:07 +0000 (14:01 +0200)
all

diff --git a/all b/all
index 8f5ffa5c573b08e0b2207d03ad28ae0df17e62b9..4d834921f387b208ea28f9ba6aa3ef5e3e3e7362 100755 (executable)
--- a/all
+++ b/all
@@ -434,11 +434,21 @@ case "$cmd" in
                fi
                case "$1" in
                        -c)
-                               clean=true
+                               cleandp=true
+                               cleanqcc=true
+                               cleanqc=true
+                               shift
+                               ;;
+                       -n)
+                               cleandp=false
+                               cleanqcc=false
+                               cleanqc=false
                                shift
                                ;;
                        *)
-                               clean=false
+                               cleandp=false
+                               cleanqcc=false
+                               cleanqc=true # version info
                                ;;
                esac
                case "$1" in
@@ -471,28 +481,28 @@ case "$cmd" in
                                MAKEFLAGS="$MAKEFLAGS DP_MAKE_TARGET=mingw"
                        fi
                fi
+
                enter "$d0/fteqcc" verbose
-               if $clean; then
+               if $cleanqcc; then
                        verbose make $MAKEFLAGS clean
                fi
                verbose make $MAKEFLAGS
+
                enter "$d0/data/xonotic-data.pk3dir" verbose
-               if $clean; then
-                       verbose make $MAKEFLAGS clean
+               if $cleanqc; then
+                       verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" "$@" $MAKEFLAGS clean
                fi
-               verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" "$@" $MAKEFLAGS clean
                verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" "$@" $MAKEFLAGS
+
                enter "$d0/darkplaces" verbose
-               if $clean; then
+               if $cleandp; then
                        verbose make $MAKEFLAGS clean
                fi
                for T in $TARGETS; do
                        verbose make $MAKEFLAGS "$@" "$T"
                done
+
                verbose "$SELF" update-maps
-               ;;
-       makebuild)
-               
                ;;
        run)
                if [ -n "$WE_HATE_OUR_USERS" ]; then
@@ -648,7 +658,7 @@ case "$cmd" in
                                                continue
                                                ;;
                                        */*)
-                                               ;;
+                                               ;;
                                        *)
                                                continue
                                                ;;
@@ -658,9 +668,23 @@ case "$cmd" in
                                                continue
                                        fi
                                fi
+                               case "$base" in
+                                       master)
+                                               realbase=$base
+                                               ;;
+                                       *)
+                                               l0=`git rev-parse "$base".."$ref" | wc -l`
+                                               l1=`git rev-parse master.."$ref" | wc -l`
+                                               if [ $l0 -gt $l1 ]; then
+                                                       realbase=master
+                                               else
+                                                       realbase=$base
+                                               fi
+                                               ;;
+                               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"`
+                               logdata=`git log --color "$realbase".."$ref"`
                                if [ -z "$logdata" ]; then
                                        reportecho4 "--> not merging, no changes vs master"
                                        if yesno "Branch \"$ref\" probably should get deleted. Do it?" ''; then
@@ -668,7 +692,7 @@ case "$cmd" in
                                                reportecho4 "--> branch deleted"
                                        fi
                                else
-                                       diffdata=`git diff --color --find-copies-harder --ignore-space-change "$base"..."$ref"`
+                                       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
@@ -679,7 +703,7 @@ case "$cmd" in
                                                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"
+                                               git checkout "$realbase"
                                                org=`git rev-parse HEAD`
                                                if ! git merge "$ref" 2>&1 | tee "$t" && ! { git ls-files -u | grep ' 1   ' >/dev/null; }; then
                                                        git reset --hard "$org"
@@ -914,7 +938,7 @@ case "$cmd" in
                echo "  $SELF branch [<remote>] <branchname>"
                echo "  $SELF branch <remote> <branchname> <srcbranchname>"
                echo "  $SELF checkout [<remote>] <branchname>"
-               echo "  $SELF compile [-c] [<client>] <options>"
+               echo "  $SELF compile [-c|-n] [<client>] <options>"
                echo "  $SELF run [<client>] <options>"
                echo "  $SELF each <command>"
                ;;