Signed-off-by: Ronnie Sahlberg <[email protected]>
---
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.556.ge8f7cba.dirty
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html