]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
scripts/git: Make the git push command and args configurable
authorteor <teor@torproject.org>
Mon, 12 Aug 2019 01:10:12 +0000 (11:10 +1000)
committerteor <teor@torproject.org>
Thu, 29 Aug 2019 12:50:37 +0000 (22:50 +1000)
TOR_GIT_PUSH provides the git push command and default arguments.

Also fix handling of git-push-all.sh script arguments and arguments that
are passed through to $TOR_GIT_PUSH, using a "--" argument as a separator.

Fix on 29879.

changes/ticket31314
scripts/git/git-push-all.sh

index 29322311712b6afa83ea76c21d166ee8921e1d8b..8b5f5da8f92da541f4bca4a87adbf2a389f12a87 100644 (file)
@@ -7,3 +7,8 @@
     - Add a -u argument to git-merge-forward.sh, so that the script can re-use
       existing test branches after a merge failure and fix.
       Closes ticket 31314.
+    - Add a TOR_GIT_PUSH env var, which sets the default git push command and
+      arguments for git-push-all.sh. Closes ticket 31314.
+    - Add a "--" command-line argument, to
+      separate git-push-all.sh script arguments from arguments that are passed
+      through to git push. Closes ticket 31314.
index f3bbe8b77863d78855a8a919ae90c584737b9f1c..2d6e77a8c1d177accc56c5594db53b7e2cea6d27 100755 (executable)
@@ -1,6 +1,7 @@
 #!/usr/bin/env bash
 
-# Usage: git-push-all.sh -t <test-branch-prefix> -r <remote-name> <git-opts>
+# Usage: git-push-all.sh -t <test-branch-prefix> -r <remote-name>
+#                        -- <git-opts>
 #        env vars: TOR_UPSTREAM_REMOTE_NAME=upstream TOR_PUSH_DELAY=0
 #        git-opts: --no-atomic --dry-run (any other git push option)
 #
@@ -16,6 +17,8 @@ set -e
 
 # Don't change this configuration - set the env vars in your .profile
 #
+# git push command and default arguments
+GIT_PUSH=${TOR_GIT_PUSH:-"git push --atomic"}
 # The upstream remote which git.torproject.org/tor.git points to.
 # In test branch mode, override this setting with -r <remote-name>
 UPSTREAM_REMOTE=${TOR_UPSTREAM_REMOTE_NAME:-"upstream"}
@@ -46,11 +49,21 @@ while getopts ":r:t:" opt; do
        OPTIND=$[$OPTIND - 2]
        ;;
     *)
-       # Assume git push will handle the option
+       # Assume we're done with script arguments,
+       # and git push will handle the option
+       break
        ;;
   esac
 done
 
+# getopts doesn't allow "-" as an option character,
+# so we have to handle -- manually
+if [ "$1" = "--" ]; then
+  shift
+fi
+
+echo "Calling git push --atomic $@ <branches>"
+
 if [ "$TEST_BRANCH_PREFIX" ]; then
   if [ "$UPSTREAM_REMOTE" = ${TOR_UPSTREAM_REMOTE_NAME:-"upstream"} ]; then
     echo "Pushing test branches ${TEST_BRANCH_PREFIX}_nnn to " \
@@ -108,9 +121,11 @@ if [ "$PUSH_DELAY" -le 0 ]; then
   # it is safe to use it unquoted.  (This also applies to the other shellcheck
   # exceptions below.)
   #
+  # Push all the branches at the same time
   # shellcheck disable=SC2086
-  git push --atomic "$@" "$UPSTREAM_REMOTE" $PUSH_BRANCHES
+  $GIT_PUSH "$@" "$UPSTREAM_REMOTE" $PUSH_BRANCHES
 else
+  # Push the branches in optimal CI order, with a delay between each push
   PUSH_BRANCHES=$(echo "$PUSH_BRANCHES" | tr " " "\n" | sort -V)
   MASTER_BRANCH=$(echo "$PUSH_BRANCHES" | tr " " "\n" | grep master)
   if [ -z "$TEST_BRANCH_PREFIX" ]; then
@@ -127,15 +142,15 @@ else
     # No release branches
     RELEASE_BRANCHES=
   fi
-  git push "$@" "$UPSTREAM_REMOTE" "$MASTER_BRANCH"
+  $GIT_PUSH "$@" "$UPSTREAM_REMOTE" "$MASTER_BRANCH"
   sleep "$PUSH_DELAY"
   # shellcheck disable=SC2086
   for b in $MAINT_BRANCHES; do
-    git push "$@" "$UPSTREAM_REMOTE" "$b"
+    $GIT_PUSH "$@" "$UPSTREAM_REMOTE" "$b"
     sleep "$PUSH_DELAY"
   done
   if [ "$RELEASE_BRANCHES" ]; then
     # shellcheck disable=SC2086
-    git push --atomic "$@" "$UPSTREAM_REMOTE" $RELEASE_BRANCHES
+    $GIT_PUSH "$@" "$UPSTREAM_REMOTE" $RELEASE_BRANCHES
   fi
 fi