diff options
Diffstat (limited to 'transport-helper.c')
-rw-r--r-- | transport-helper.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/transport-helper.c b/transport-helper.c index 7dce4a4cac..107742891f 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -279,7 +279,7 @@ static void standard_options(struct transport *t) char buf[16]; int n; int v = t->verbose; - int no_progress = v < 0 || (!t->progress && !isatty(1)); + int no_progress = v < 0 || (!t->progress && !isatty(2)); set_helper_option(t, "progress", !no_progress ? "true" : "false"); @@ -534,24 +534,27 @@ static int push_refs(struct transport *transport, return transport->push_refs(transport, remote_refs, flags); } - if (!remote_refs) + if (!remote_refs) { + fprintf(stderr, "No refs in common and none specified; doing nothing.\n" + "Perhaps you should specify a branch such as 'master'.\n"); return 0; + } helper = get_helper(transport); if (!data->push) return 1; for (ref = remote_refs; ref; ref = ref->next) { - if (ref->peer_ref) - hashcpy(ref->new_sha1, ref->peer_ref->new_sha1); - else if (!mirror) + if (!ref->peer_ref && !mirror) continue; - ref->deletion = is_null_sha1(ref->new_sha1); - if (!ref->deletion && - !hashcmp(ref->old_sha1, ref->new_sha1)) { - ref->status = REF_STATUS_UPTODATE; + /* Check for statuses set by set_ref_status_for_push() */ + switch (ref->status) { + case REF_STATUS_REJECT_NONFASTFORWARD: + case REF_STATUS_UPTODATE: continue; + default: + ; /* do nothing */ } if (force_all) @@ -640,6 +643,15 @@ static int push_refs(struct transport *transport, continue; } + if (ref->status != REF_STATUS_NONE) { + /* + * Earlier, the ref was marked not to be pushed, so ignore the ref + * status reported by the remote helper if the latter is 'no match'. + */ + if (status == REF_STATUS_NONE) + continue; + } + ref->status = status; ref->remote_status = msg; } |