Here is the non-RFC version of of my proposed protocol transition plan which can be found here: https://public-inbox.org/git/20170824225328.8174-1-bmwill@xxxxxxxxxx/ The main take away from the comments on the RFC were that the first transition shouldn't be drastic, so this patch set introduces protocol v1 which is simply protocol v0 (which is what I'm calling the current git wire protocol) with a single pkt-line containing a version string before the ref advertisement. I have included tests for protocol version 1 to verify that it works with the following transports: git://, file://, ssh://, and http://. I have also included an interop test to ensure that sending the version request out of band doesn't cause issues with older servers. Any and all comments and feedback are welcome, thanks! Brandon Williams (8): pkt-line: add packet_write function protocol: introduce protocol extention mechanisms daemon: recognize hidden request arguments upload-pack, receive-pack: introduce protocol version 1 connect: teach client to recognize v1 server response connect: tell server that the client understands v1 http: tell server that the client understands v1 i5700: add interop test for protocol transition Documentation/config.txt | 16 ++ Documentation/git.txt | 5 + Makefile | 1 + builtin/receive-pack.c | 14 ++ cache.h | 9 + connect.c | 59 ++++++- daemon.c | 71 ++++++-- http.c | 18 ++ pkt-line.c | 6 + pkt-line.h | 1 + protocol.c | 72 ++++++++ protocol.h | 15 ++ t/interop/i5700-protocol-transition.sh | 68 ++++++++ t/lib-httpd/apache.conf | 7 + t/t5700-protocol-v1.sh | 292 +++++++++++++++++++++++++++++++++ upload-pack.c | 17 +- 16 files changed, 655 insertions(+), 16 deletions(-) create mode 100644 protocol.c create mode 100644 protocol.h create mode 100755 t/interop/i5700-protocol-transition.sh create mode 100755 t/t5700-protocol-v1.sh -- 2.14.1.690.gbb1197296e-goog