diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-01-21 20:24:07 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-01-24 14:37:17 -0800 |
commit | 5ece083fc7ffd60d38b9abf7797fbf00decd2bcc (patch) | |
tree | 720da8792593369e955915f28078ca4182df18c6 | |
parent | 256b9d70a497534338f0c22101cb6566ab3f1665 (diff) | |
download | git-5ece083fc7ffd60d38b9abf7797fbf00decd2bcc.tar.gz |
push: further clean up fields of "struct ref"
The "nonfastforward" and "update" fields are only used while
deciding what value to assign to the "status" locally in a single
function. Remove them from the "struct ref".
The "requires_force" field is not used to decide if the proposed
update requires a --force option to succeed, or to record such a
decision made elsewhere. It is used by status reporting code that
the particular update was "forced". Rename it to "forced_update",
and move the code to assign to it around to further clarify how it
is used and what it is used for.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | cache.h | 4 | ||||
-rw-r--r-- | remote.c | 16 | ||||
-rw-r--r-- | transport.c | 2 |
3 files changed, 8 insertions, 14 deletions
@@ -1001,10 +1001,8 @@ struct ref { char *symref; unsigned int force:1, - requires_force:1, + forced_update:1, merge:1, - nonfastforward:1, - update:1, deletion:1; enum { REF_STATUS_NONE = 0, @@ -1317,27 +1317,23 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror, * passing the --force argument */ - ref->update = - !ref->deletion && - !is_null_sha1(ref->old_sha1); - - if (ref->update) { - ref->nonfastforward = + if (!ref->deletion && !is_null_sha1(ref->old_sha1)) { + int nonfastforward = !has_sha1_file(ref->old_sha1) - || !ref_newer(ref->new_sha1, ref->old_sha1); + || !ref_newer(ref->new_sha1, ref->old_sha1); if (!prefixcmp(ref->name, "refs/tags/")) { - ref->requires_force = 1; if (!force_ref_update) { ref->status = REF_STATUS_REJECT_ALREADY_EXISTS; continue; } - } else if (ref->nonfastforward) { - ref->requires_force = 1; + ref->forced_update = 1; + } else if (nonfastforward) { if (!force_ref_update) { ref->status = REF_STATUS_REJECT_NONFASTFORWARD; continue; } + ref->forced_update = 1; } } } diff --git a/transport.c b/transport.c index 2673d273ff..585ebcd2bf 100644 --- a/transport.c +++ b/transport.c @@ -659,7 +659,7 @@ static void print_ok_ref_status(struct ref *ref, int porcelain) const char *msg; strcpy(quickref, status_abbrev(ref->old_sha1)); - if (ref->requires_force) { + if (ref->forced_update) { strcat(quickref, "..."); type = '+'; msg = "forced update"; |