Meta/pushall: make it safer to rewind next
Junio C Hamano committed
Dec 15, 2014 at 12:41 UTC
cf7ee947c35ca502b35d1947db883fed6f6ab6a0
1 file changed
+30
-16
pushall
+30
-16
index d262e9f823..2971364e77 100755
--- a/pushall
+++ b/pushall
@@ -1,26 +1,40 @@
#!/bin/sh
sites='ko repo github2 sfjp sf.net gph '
+nexts='ko repo gph github2'
-while :
-do
- failed=
- for remote in $sites
+push_retry () {
+ sites=$1
+ shift
+ while :
do
- printf "%s: " "$remote"
- git push --follow-tags "$remote" "$@" || failed="$failed$remote "
+ failed=
+ for remote in $sites
+ do
+ printf "%s: " "$remote"
+ git push --follow-tags "$remote" "$@" || failed="$failed$remote "
+ done
+
+ if test -z "$failed"
+ then
+ break
+ elif test "x$sites" = "x$failed"
+ then
+ echo >&2 "Failed to push to: $sites"
+ exit 1
+ fi
+ sites="$failed"
done
+}
+
+case " $* " in
+*' +next '*)
+ push_retry "$nexts" "$@"
+ exit $?
+ ;;
+esac
- if test -z "$failed"
- then
- break
- elif test "x$sites" = "x$failed"
- then
- echo >&2 "Failed to push to: $sites"
- exit 1
- fi
- sites="$failed"
-done
+push_retry "$sites" "$@"
case "$#,$*" in
0,* | 1,-n)