push: further clean up fields of "struct ref"
[gitweb.git] / remote.c
index d3a1ca233becf76411a4653cee4416ce97ee1217..3375914abca3f7f1e5f1844f0674fe1543ca4d64 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -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;
                        }
                }
        }