On Wed, Dec 17, 2014 at 1:32 PM, Stefan Beller <sbeller@xxxxxxxxxx> wrote: > From: Ronnie Sahlberg <sahlberg@xxxxxxxxxx> > > This adds support to the protocol between send-pack and receive-pack to > * allow receive-pack to inform the client that it has atomic push capability > * allow send-pack to request atomic push back. > > There is currently no setting in send-pack to actually request that atomic > pushes are to be used yet. This only adds protocol capability not ability > for the user to activate it. > > Signed-off-by: Ronnie Sahlberg <sahlberg@xxxxxxxxxx> > Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> > --- > diff --git a/Documentation/technical/protocol-capabilities.txt b/Documentation/technical/protocol-capabilities.txt > index 6d5424c..68ec23d 100644 > --- a/Documentation/technical/protocol-capabilities.txt > +++ b/Documentation/technical/protocol-capabilities.txt > @@ -244,6 +245,14 @@ respond with the 'quiet' capability to suppress server-side progress > reporting if the local progress reporting is also being suppressed > (e.g., via `push -q`, or if stderr does not go to a tty). > > +atomic > +------ > + > +If the server sends the 'atomic' capability it is capable of accepting > +atomic pushes. If the pushing client requests this capability, the server > +will update the refs in one single atomic transaction. Either all refs are "one single atomic" sounds awfully redundant. > +updated or none. > + > allow-tip-sha1-in-want > ---------------------- > > diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c > index 32fc540..e76e5d5 100644 > --- a/builtin/receive-pack.c > +++ b/builtin/receive-pack.c > @@ -328,6 +332,10 @@ int send_pack(struct send_pack_args *args, > "Perhaps you should specify a branch such as 'master'.\n"); > return 0; > } > + if (args->atomic && !atomic_supported) { > + return error("server does not support atomic push."); Just above this code, the 'args->push_cert' check uses die() rather than error() when the remote side fails to support the requested feature. > + } > + use_atomic = atomic_supported && args->atomic; > > if (status_report) > strbuf_addstr(&cap_buf, " report-status"); -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html