]> git.xonotic.org Git - xonotic/xonotic.git/blobdiff - all
reclone: also fetch upstream, this then even can recover from upstream changes
[xonotic/xonotic.git] / all
diff --git a/all b/all
index e4eb461fb810ff5a43a5152c44e27b014935a29f..9a5b07e3e5534d1e8386bdbbb5ac82ec5bc7534b 100755 (executable)
--- a/all
+++ b/all
@@ -895,19 +895,35 @@ case "$cmd" in
        clean)
                force=false
                gotoupstream=false
+               fetchupstream=false
                gotomaster=false
                rmuntracked=false
                killbranches=false
                # usage:
-               #   ./all clean [-m] [-f | -fu] [-r] [-D]
+               #   ./all clean [-m] [-f | -fu | -fU] [-r] [-D]
+               #   ./all clean --reclone
                while :; do
-                       if [ x"$1" = x"-f" ]; then
+                       if [ x"$1" = x"--reclone" ]; then
+                               force=true
+                               fetchupstream=true
+                               gotoupstream=true
+                               gotomaster=true
+                               rmuntracked=true
+                               killbranches=true
+                       elif [ x"$1" = x"-f" ]; then
                                force=true
                        elif [ x"$1" = x"-u" ]; then
                                gotoupstream=true
+                       elif [ x"$1" = x"-U" ]; then
+                               gotoupstream=true
+                               fetchupstream=true
                        elif [ x"$1" = x"-fu" ]; then
                                force=true
                                gotoupstream=true
+                       elif [ x"$1" = x"-Fu" ]; then
+                               force=true
+                               gotoupstream=true
+                               fetchupstream=true
                        elif [ x"$1" = x"-m" ]; then
                                gotomaster=true
                        elif [ x"$1" = x"-r" ]; then
@@ -927,6 +943,9 @@ case "$cmd" in
                                        exit 1
                                fi
                                if $gotomaster; then
+                                       if $fetchupstream; then
+                                               verbose git fetch origin
+                                       fi
                                        verbose git checkout -f "`repobranch "$d"`"
                                        verbose git reset --hard origin/"`repobranch "$d"`"
                                else
@@ -935,6 +954,9 @@ case "$cmd" in
                                        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"
+                                       fi
                                        if ! git rev-parse "$upstream" >/dev/null 2>&1; then
                                                upstream="origin/`repobranch "$d"`"
                                        fi