]> git.ipfire.org Git - thirdparty/git.git/blobdiff - transport-helper.c
Merge branch 'en/merge-ort-api-null-impl'
[thirdparty/git.git] / transport-helper.c
index b573b6c730ccf49d2805a27b14957504f2218f41..5f6e0b3bd874dba714c107dffebd423ef25d10b4 100644 (file)
@@ -827,6 +827,10 @@ static int push_update_ref_status(struct strbuf *buf,
                        status = REF_STATUS_REJECT_STALE;
                        FREE_AND_NULL(msg);
                }
+               else if (!strcmp(msg, "remote ref updated since checkout")) {
+                       status = REF_STATUS_REJECT_REMOTE_UPDATED;
+                       FREE_AND_NULL(msg);
+               }
                else if (!strcmp(msg, "forced update")) {
                        forced = 1;
                        FREE_AND_NULL(msg);
@@ -934,6 +938,11 @@ static void set_common_push_options(struct transport *transport,
                if (set_helper_option(transport, TRANS_OPT_ATOMIC, "true") != 0)
                        die(_("helper %s does not support --atomic"), name);
 
+       if (flags & TRANSPORT_PUSH_FORCE_IF_INCLUDES)
+               if (set_helper_option(transport, TRANS_OPT_FORCE_IF_INCLUDES, "true") != 0)
+                       die(_("helper %s does not support --%s"),
+                           name, TRANS_OPT_FORCE_IF_INCLUDES);
+
        if (flags & TRANSPORT_PUSH_OPTIONS) {
                struct string_list_item *item;
                for_each_string_list_item(item, transport->push_options)
@@ -967,6 +976,7 @@ static int push_refs_with_push(struct transport *transport,
                case REF_STATUS_REJECT_NONFASTFORWARD:
                case REF_STATUS_REJECT_STALE:
                case REF_STATUS_REJECT_ALREADY_EXISTS:
+               case REF_STATUS_REJECT_REMOTE_UPDATED:
                        if (atomic) {
                                reject_atomic_push(remote_refs, mirror);
                                string_list_clear(&cas_options, 0);