From: Josh Steadmon <steadmon@xxxxxxxxxx> This is an alternate approach to the previous series. We add a registry of supported wire protocol versions that individual commands can use to declare supported versions before contacting a server. The client will then advertise all supported versions, while the server will choose the first recognized version from the advertised list. Compared to the previous series, this approach is more convenient for protocol_v2, which is intended to work on a single server endpoint. However, it has the drawback that every command that acts as a client must register its supported versions; it is not always obvious which (if any) network operations a given command will perform. Thank you to Stefan for his review of the previous series and for helping me think through the requirements for this new approach. Josh Steadmon (1): protocol: advertise multiple supported versions builtin/archive.c | 3 ++ builtin/clone.c | 4 ++ builtin/fetch-pack.c | 4 ++ builtin/fetch.c | 5 ++ builtin/ls-remote.c | 5 ++ builtin/pull.c | 5 ++ builtin/push.c | 4 ++ builtin/send-pack.c | 3 ++ connect.c | 47 ++++++++--------- protocol.c | 115 ++++++++++++++++++++++++++++++++++++++--- protocol.h | 17 ++++++ remote-curl.c | 28 ++++++---- t/t5570-git-daemon.sh | 2 +- t/t5700-protocol-v1.sh | 8 +-- t/t5702-protocol-v2.sh | 16 +++--- transport-helper.c | 6 +++ 16 files changed, 217 insertions(+), 55 deletions(-) -- 2.19.0.605.g01d371f741-goog