diff options
author | Junio C Hamano <junkio@cox.net> | 2007-04-06 23:04:53 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-04-07 02:27:31 -0700 |
commit | fd1d1b05e937ff3164be38b111e5d76d592ee548 (patch) | |
tree | 15d104fd4f1c287d045e9df2c572c311fac12056 | |
parent | 39878b0cb7d0afc3ff4c8adb715815f116188178 (diff) | |
download | git-fd1d1b05e937ff3164be38b111e5d76d592ee548.tar.gz git-fd1d1b05e937ff3164be38b111e5d76d592ee548.tar.xz |
git-push to multiple locations does not stop at the first failure
When pushing into multiple repositories with git push, via
multiple URL in .git/remotes/$shorthand or multiple url
variables in [remote "$shorthand"] section, we used to stop upon
the first failure. Continue the operation and report the
failure at the end.
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | builtin-push.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/builtin-push.c b/builtin-push.c index 23143be54..cb78401c9 100644 --- a/builtin-push.c +++ b/builtin-push.c @@ -297,7 +297,7 @@ static int read_config(const char *repo, const char *uri[MAX_URI]) static int do_push(const char *repo) { const char *uri[MAX_URI]; - int i, n; + int i, n, errs; int common_argc; const char **argv; int argc; @@ -317,6 +317,7 @@ static int do_push(const char *repo) argv[argc++] = receivepack; common_argc = argc; + errs = 0; for (i = 0; i < n; i++) { int err; int dest_argc = common_argc; @@ -343,19 +344,19 @@ static int do_push(const char *repo) error("failed to push to '%s'", uri[i]); switch (err) { case -ERR_RUN_COMMAND_FORK: - die("unable to fork for %s", sender); + error("unable to fork for %s", sender); case -ERR_RUN_COMMAND_EXEC: - die("unable to exec %s", sender); + error("unable to exec %s", sender); + break; case -ERR_RUN_COMMAND_WAITPID: case -ERR_RUN_COMMAND_WAITPID_WRONG_PID: case -ERR_RUN_COMMAND_WAITPID_SIGNAL: case -ERR_RUN_COMMAND_WAITPID_NOEXIT: - die("%s died with strange error", sender); - default: - return -err; + error("%s died with strange error", sender); } + errs++; } - return 0; + return !!errs; } int cmd_push(int argc, const char **argv, const char *prefix) |