Signed-off-by: Ronnie Sahlberg <sahlb...@google.com>
---
 builtin/receive-pack.c |  6 +++++-
 send-pack.c            | 12 +++++++++---
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index 0565b94..f6b20cb 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -36,6 +36,7 @@ static int transfer_unpack_limit = -1;
 static int unpack_limit = 100;
 static int report_status;
 static int use_sideband;
+static int use_atomic_push;
 static int quiet;
 static int prefer_ofs_delta = 1;
 static int auto_update_server_info;
@@ -142,7 +143,8 @@ static void show_ref(const char *path, const unsigned char 
*sha1)
        else
                packet_write(1, "%s %s%c%s%s agent=%s\n",
                             sha1_to_hex(sha1), path, 0,
-                            " report-status delete-refs side-band-64k quiet",
+                            " report-status delete-refs side-band-64k quiet"
+                            " atomic-push",
                             prefer_ofs_delta ? " ofs-delta" : "",
                             git_user_agent_sanitized());
        sent_capabilities = 1;
@@ -892,6 +894,8 @@ static struct command *read_head_info(struct sha1_array 
*shallow)
                                use_sideband = LARGE_PACKET_MAX;
                        if (parse_feature_request(feature_list, "quiet"))
                                quiet = 1;
+                       if (parse_feature_request(feature_list, "atomic-push"))
+                               use_atomic_push = 1;
                }
                cmd = xcalloc(1, sizeof(struct command) + len - 80);
                hashcpy(cmd->old_sha1, old_sha1);
diff --git a/send-pack.c b/send-pack.c
index 6129b0f..f91b8d9 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -205,6 +205,7 @@ int send_pack(struct send_pack_args *args,
        int use_sideband = 0;
        int quiet_supported = 0;
        int agent_supported = 0;
+       int atomic_push_supported = 0;
        unsigned cmds_sent = 0;
        int ret;
        struct async demux;
@@ -224,6 +225,8 @@ int send_pack(struct send_pack_args *args,
                agent_supported = 1;
        if (server_supports("no-thin"))
                args->use_thin_pack = 0;
+       if (server_supports("atomic-push"))
+               atomic_push_supported = 1;
 
        if (!remote_refs) {
                fprintf(stderr, "No refs in common and none specified; doing 
nothing.\n"
@@ -269,17 +272,20 @@ int send_pack(struct send_pack_args *args,
                        char *old_hex = sha1_to_hex(ref->old_sha1);
                        char *new_hex = sha1_to_hex(ref->new_sha1);
                        int quiet = quiet_supported && (args->quiet || 
!args->progress);
+                       int atomic_push = atomic_push_supported;
 
                        if (!cmds_sent && (status_report || use_sideband ||
-                                          quiet || agent_supported)) {
+                                          quiet || agent_supported ||
+                                          atomic_push)) {
                                packet_buf_write(&req_buf,
-                                                "%s %s %s%c%s%s%s%s%s",
+                                                "%s %s %s%c%s%s%s%s%s%s",
                                                 old_hex, new_hex, ref->name, 0,
                                                 status_report ? " 
report-status" : "",
                                                 use_sideband ? " 
side-band-64k" : "",
                                                 quiet ? " quiet" : "",
                                                 agent_supported ? " agent=" : 
"",
-                                                agent_supported ? 
git_user_agent_sanitized() : ""
+                                                agent_supported ? 
git_user_agent_sanitized() : "",
+                                                atomic_push ? " atomic-push" : 
""
                                                );
                        }
                        else
-- 
2.0.1.528.gd0e7a84

--
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