From: Junio C Hamano Date: Tue, 11 Aug 2009 05:18:21 +0000 (-0700) Subject: Merge branch 'jk/push-quiet' X-Git-Tag: v1.6.5-rc0~79 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/56b36b834db41ea81066000f02c13ea8d63cbfcb?ds=inline;hp=-c Merge branch 'jk/push-quiet' * jk/push-quiet: transport: don't show push status if --quiet is given transport: pass "quiet" flag to pack-objects push: add --quiet flag --- 56b36b834db41ea81066000f02c13ea8d63cbfcb diff --combined transport.c index 8a42e76b3e,a3d0145116..afec5b731a --- a/transport.c +++ b/transport.c @@@ -396,6 -396,7 +396,6 @@@ static int curl_transport_push(struct t { const char **argv; int argc; - int err; if (flags & TRANSPORT_PUSH_MIRROR) return error("http transport does not support mirror mode"); @@@ -415,7 -416,20 +415,7 @@@ while (refspec_nr--) argv[argc++] = *refspec++; argv[argc] = NULL; - err = run_command_v_opt(argv, RUN_GIT_CMD); - switch (err) { - case -ERR_RUN_COMMAND_FORK: - error("unable to fork for %s", argv[0]); - case -ERR_RUN_COMMAND_EXEC: - error("unable to exec %s", argv[0]); - 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: - error("%s died with strange error", argv[0]); - } - return !!err; + return !!run_command_v_opt(argv, RUN_GIT_CMD); } static struct ref *get_refs_via_curl(struct transport *transport, int for_push) @@@ -667,6 -681,21 +667,21 @@@ static int fetch_refs_via_pack(struct t return (refs ? 0 : -1); } + static int push_had_errors(struct ref *ref) + { + for (; ref; ref = ref->next) { + switch (ref->status) { + case REF_STATUS_NONE: + case REF_STATUS_UPTODATE: + case REF_STATUS_OK: + break; + default: + return 1; + } + } + return 0; + } + static int refs_pushed(struct ref *ref) { for (; ref; ref = ref->next) { @@@ -878,6 -907,7 +893,7 @@@ static int git_transport_push(struct tr args.force_update = !!(flags & TRANSPORT_PUSH_FORCE); args.use_thin_pack = data->thin; args.verbose = !!(flags & TRANSPORT_PUSH_VERBOSE); + args.quiet = !!(flags & TRANSPORT_PUSH_QUIET); args.dry_run = !!(flags & TRANSPORT_PUSH_DRY_RUN); ret = send_pack(&args, data->fd, data->conn, remote_refs, @@@ -995,6 -1025,7 +1011,7 @@@ int transport_push(struct transport *tr struct ref *local_refs = get_local_heads(); int match_flags = MATCH_REFS_NONE; int verbose = flags & TRANSPORT_PUSH_VERBOSE; + int quiet = flags & TRANSPORT_PUSH_QUIET; int porcelain = flags & TRANSPORT_PUSH_PORCELAIN; int ret; @@@ -1010,7 -1041,9 +1027,9 @@@ ret = transport->push_refs(transport, remote_refs, flags); - print_push_status(transport->url, remote_refs, verbose | porcelain, porcelain); + if (!quiet || push_had_errors(remote_refs)) + print_push_status(transport->url, remote_refs, + verbose | porcelain, porcelain); if (!(flags & TRANSPORT_PUSH_DRY_RUN)) { struct ref *ref;