The "update" field in "struct ref" is only used in a very narrow
scope in a single function.  Remove it.

Also simplify the code that rejects an attempted push by first
checking if the proposed update is forced (in which case we do not
need any check on our end).

Signed-off-by: Junio C Hamano <gits...@pobox.com>
---
 cache.h  |  1 -
 remote.c | 42 +++++++++++++-----------------------------
 2 files changed, 13 insertions(+), 30 deletions(-)

diff --git a/cache.h b/cache.h
index 360bba5..377a3df 100644
--- a/cache.h
+++ b/cache.h
@@ -1003,7 +1003,6 @@ struct ref {
                force:1,
                forced_update:1,
                merge:1,
-               update:1,
                deletion:1;
        enum {
                REF_STATUS_NONE = 0,
diff --git a/remote.c b/remote.c
index 689dcf7..248910f 100644
--- a/remote.c
+++ b/remote.c
@@ -1317,37 +1317,21 @@ 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) {
-                       if (!prefixcmp(ref->name, "refs/tags/")) {
-                               if (!force_ref_update) {
-                                       ref->status = 
REF_STATUS_REJECT_ALREADY_EXISTS;
-                                       continue;
-                               }
-                               ref->forced_update = 1;
-                       } else if (!has_sha1_file(ref->old_sha1) ||
-                                  
!lookup_commit_reference_gently(ref->old_sha1, 1)) {
-                               if (!force_ref_update) {
-                                       ref->status = 
REF_STATUS_REJECT_FETCH_FIRST;
-                                       continue;
-                               }
-                               ref->forced_update = 1;
-                       } else if 
(!lookup_commit_reference_gently(ref->new_sha1, 1)) {
-                               if (!force_ref_update) {
-                                       ref->status = 
REF_STATUS_REJECT_NEEDS_FORCE;
-                                       continue;
-                               }
-                               ref->forced_update = 1;
-                       } else if (!ref_newer(ref->new_sha1, ref->old_sha1)) {
-                               if (!force_ref_update) {
-                                       ref->status = 
REF_STATUS_REJECT_NONFASTFORWARD;
-                                       continue;
-                               }
+               if (!ref->deletion && !is_null_sha1(ref->old_sha1)) {
+                       if (force_ref_update) {
                                ref->forced_update = 1;
+                               continue;
                        }
+
+                       if (!prefixcmp(ref->name, "refs/tags/"))
+                               ref->status = REF_STATUS_REJECT_ALREADY_EXISTS;
+                       else if (!has_sha1_file(ref->old_sha1) ||
+                                !lookup_commit_reference_gently(ref->old_sha1, 
1))
+                               ref->status = REF_STATUS_REJECT_FETCH_FIRST;
+                       else if (!lookup_commit_reference_gently(ref->new_sha1, 
1))
+                               ref->status = REF_STATUS_REJECT_NEEDS_FORCE;
+                       else if (!ref_newer(ref->new_sha1, ref->old_sha1))
+                               ref->status = REF_STATUS_REJECT_NONFASTFORWARD;
                }
        }
 }
-- 
1.8.1.1.498.gfdee8be

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to