This patch series adds a flag to git push to update the remote refs atomically. All comments from Eric and Junio have been incorporated. The patch to negotiate the atomic push protocol was ripped apart and we have one commit for the receiving side and one for the sending side, so the order of new functionality introduced should not bring any bisect breakages. The remote side learned the receive.advertiseatomic config option and a test was added, that the user cannot push any more if they ask for --atomic but the server doesn't advertise atomic. But as of writing this cover letter I have a question on the security implications here. If we ask the remote side to not advertise atomic, (say because of some problem with too many file descriptors open) but the client side (being a malicious client, not possible with the code presented in this patch series) does ask for atomic, the server should not obey the request to handle it atomic. I just added that as well. How about other capabilites requested such as "report-status", "side-band-64k" and "quiet" ? This series applies on top of origin/mh/reflog-expire Any comments are welcome! Thanks, Stefan Ronnie Sahlberg (3): receive-pack.c: negotiate atomic push support send-pack.c: add --atomic command line argument push.c: add an --atomic argument Stefan Beller (6): receive-pack.c: shorten the execute_commands loop over all commands receive-pack.c: move iterating over all commands outside execute_commands receive-pack.c: move transaction handling in a central place receive-pack.c: add execute_commands_atomic function send-pack: rename ref_update_to_be_sent to check_to_send_update t5543-atomic-push.sh: add basic tests for atomic pushes Documentation/git-push.txt | 7 +- Documentation/git-send-pack.txt | 7 +- Documentation/technical/protocol-capabilities.txt | 13 +- builtin/push.c | 5 + builtin/receive-pack.c | 166 ++++++++++++++---- builtin/send-pack.c | 6 +- remote.h | 3 +- send-pack.c | 65 +++++++- send-pack.h | 3 +- t/t5543-atomic-push.sh | 194 ++++++++++++++++++++++ transport.c | 5 + transport.h | 1 + 12 files changed, 425 insertions(+), 50 deletions(-) create mode 100755 t/t5543-atomic-push.sh -- 2.2.1.62.g3f15098 -- 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