aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2007-04-08 23:54:47 -0700
committerJunio C Hamano <junkio@cox.net>2007-04-08 23:54:47 -0700
commit5bcbc7ff1014c58e7296713926206bf6a69e0f4c (patch)
treeaa3c3d18f01fe2fc5c525691ba90700a2f403c11
parent58fe516bb51f09f372e7442933161c10b7ccddd8 (diff)
parentfd1d1b05e937ff3164be38b111e5d76d592ee548 (diff)
downloadgit-5bcbc7ff1014c58e7296713926206bf6a69e0f4c.tar.gz
git-5bcbc7ff1014c58e7296713926206bf6a69e0f4c.tar.xz
Merge branch 'jc/push'
* jc/push: git-push to multiple locations does not stop at the first failure git-push reports the URL after failing.
-rw-r--r--builtin-push.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/builtin-push.c b/builtin-push.c
index 70b1168fa..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;
@@ -339,21 +340,23 @@ static int do_push(const char *repo)
err = run_command_v_opt(argv, RUN_GIT_CMD);
if (!err)
continue;
+
+ 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)