transport.c::transport_push(): make ref status affect return value
[gitweb.git] / transport.c
index 12c4423f79f251a93675af7cadfc3bd1f38c6967..9b23989117da9d538b8221b02963bbcd17784d6c 100644 (file)
@@ -875,7 +875,7 @@ int transport_push(struct transport *transport,
                int verbose = flags & TRANSPORT_PUSH_VERBOSE;
                int quiet = flags & TRANSPORT_PUSH_QUIET;
                int porcelain = flags & TRANSPORT_PUSH_PORCELAIN;
-               int ret;
+               int ret, err;
 
                if (flags & TRANSPORT_PUSH_ALL)
                        match_flags |= MATCH_REFS_ALL;
@@ -892,8 +892,11 @@ int transport_push(struct transport *transport,
                        flags & TRANSPORT_PUSH_FORCE);
 
                ret = transport->push_refs(transport, remote_refs, flags);
+               err = push_had_errors(remote_refs);
 
-               if (!quiet || push_had_errors(remote_refs))
+               ret |= err;
+
+               if (!quiet || err)
                        print_push_status(transport->url, remote_refs,
                                        verbose | porcelain, porcelain,
                                        nonfastforward);