Merge branch 'ld/push-porcelain'
authorJunio C Hamano <gitster@pobox.com>
Mon, 15 Mar 2010 07:58:24 +0000 (00:58 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 15 Mar 2010 07:58:24 +0000 (00:58 -0700)
* ld/push-porcelain:
  t5516: Use test_cmp when appropriate
  git-push: add tests for git push --porcelain
  git-push: make git push --porcelain print "Done"
  git-push: send "To <remoteurl>" messages to the standard output in --porcelain mode
  git-push: fix an advice message so it goes to stderr

Conflicts:
transport.c

1  2 
builtin/push.c
builtin/send-pack.c
transport.c

diff --cc builtin/push.c
Simple merge
index 6019eac9182e22f2d485acdb83be209dbc49968a,078bc3e8ec2c19f7fc5e8688cccd3ac4679c7a51..481602d8ae73612226bcc758f2aedea7f964779c
@@@ -351,16 -474,12 +351,20 @@@ int send_pack(struct send_pack_args *ar
        if (args->stateless_rpc)
                packet_flush(out);
  
 +      if (use_sideband && cmds_sent) {
 +              if (finish_async(&demux)) {
 +                      error("error in sideband demultiplexer");
 +                      ret = -1;
 +              }
 +              close(demux.out);
 +      }
 +
        if (ret < 0)
                return ret;
+       if (args->porcelain)
+               return 0;
        for (ref = remote_refs; ref; ref = ref->next) {
                switch (ref->status) {
                case REF_STATUS_NONE:
diff --cc transport.c
index f07bd33e86cdfb1b41d2e4d27ad1942fcf326147,260350b5a6f1eb38e3755a6be5befef66c04fa29..825be9456c79a47726a6bbf35a6efb4d42d21033
@@@ -1065,13 -1052,12 +1066,12 @@@ int transport_push(struct transport *tr
                        flags & TRANSPORT_PUSH_MIRROR,
                        flags & TRANSPORT_PUSH_FORCE);
  
-               ret = transport->push_refs(transport, remote_refs, flags);
+               push_ret = transport->push_refs(transport, remote_refs, flags);
                err = push_had_errors(remote_refs);
-               ret |= err;
+               ret = push_ret | err;
  
                if (!quiet || err)
 -                      print_push_status(transport->url, remote_refs,
 +                      transport_print_push_status(transport->url, remote_refs,
                                        verbose | porcelain, porcelain,
                                        nonfastforward);
  
                if (!(flags & TRANSPORT_PUSH_DRY_RUN)) {
                        struct ref *ref;
                        for (ref = remote_refs; ref; ref = ref->next)
 -                              update_tracking_ref(transport->remote, ref, verbose);
 +                              transport_update_tracking_ref(transport->remote, ref, verbose);
                }
  
-               if (!quiet && !ret && !transport_refs_pushed(remote_refs))
+               if (porcelain && !push_ret)
+                       puts("Done");
 -              else if (!quiet && !ret && !refs_pushed(remote_refs))
++              else if (!quiet && !ret && !transport_refs_pushed(remote_refs))
                        fprintf(stderr, "Everything up-to-date\n");
                return ret;
        }
        return 1;