aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2009-08-05 16:23:26 -0400
committerJunio C Hamano <gitster@pobox.com>2009-08-05 20:14:11 -0700
commit481c7a6db907774d0f06565d00fd06500a7ae7a4 (patch)
treee1f8c70699c446e7be5c8d9cbbaa9b226f95ff71
parent120703292b2828d3c35c937b7f5e75ec570a42e9 (diff)
downloadgit-481c7a6db907774d0f06565d00fd06500a7ae7a4.tar.gz
git-481c7a6db907774d0f06565d00fd06500a7ae7a4.tar.xz
transport: don't show push status if --quiet is given
When --quiet is given, the user generally only wants to see errors. So let's suppress printing the ref status table unless there is an error, in which case we print out the whole table. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--transport.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/transport.c b/transport.c
index c3191ed20..a3d014511 100644
--- a/transport.c
+++ b/transport.c
@@ -681,6 +681,21 @@ static int fetch_refs_via_pack(struct transport *transport,
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) {
@@ -1010,6 +1025,7 @@ int transport_push(struct transport *transport,
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;
@@ -1025,7 +1041,9 @@ int transport_push(struct transport *transport,
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;