@@ -667,6 +667,21 @@ static int fetch_refs_via_pack(struct transport *transport,
667667 return (refs ? 0 : -1 );
668668}
669669
670+ static int push_had_errors (struct ref * ref )
671+ {
672+ for (; ref ; ref = ref -> next ) {
673+ switch (ref -> status ) {
674+ case REF_STATUS_NONE :
675+ case REF_STATUS_UPTODATE :
676+ case REF_STATUS_OK :
677+ break ;
678+ default :
679+ return 1 ;
680+ }
681+ }
682+ return 0 ;
683+ }
684+
670685static int refs_pushed (struct ref * ref )
671686{
672687 for (; ref ; ref = ref -> next ) {
@@ -878,6 +893,7 @@ static int git_transport_push(struct transport *transport, struct ref *remote_re
878893 args .force_update = !!(flags & TRANSPORT_PUSH_FORCE );
879894 args .use_thin_pack = data -> thin ;
880895 args .verbose = !!(flags & TRANSPORT_PUSH_VERBOSE );
896+ args .quiet = !!(flags & TRANSPORT_PUSH_QUIET );
881897 args .dry_run = !!(flags & TRANSPORT_PUSH_DRY_RUN );
882898
883899 ret = send_pack (& args , data -> fd , data -> conn , remote_refs ,
@@ -995,6 +1011,7 @@ int transport_push(struct transport *transport,
9951011 struct ref * local_refs = get_local_heads ();
9961012 int match_flags = MATCH_REFS_NONE ;
9971013 int verbose = flags & TRANSPORT_PUSH_VERBOSE ;
1014+ int quiet = flags & TRANSPORT_PUSH_QUIET ;
9981015 int porcelain = flags & TRANSPORT_PUSH_PORCELAIN ;
9991016 int ret ;
10001017
@@ -1010,7 +1027,9 @@ int transport_push(struct transport *transport,
10101027
10111028 ret = transport -> push_refs (transport , remote_refs , flags );
10121029
1013- print_push_status (transport -> url , remote_refs , verbose | porcelain , porcelain );
1030+ if (!quiet || push_had_errors (remote_refs ))
1031+ print_push_status (transport -> url , remote_refs ,
1032+ verbose | porcelain , porcelain );
10141033
10151034 if (!(flags & TRANSPORT_PUSH_DRY_RUN )) {
10161035 struct ref * ref ;
0 commit comments