For debugging and statistical purposes, it can be useful for Git servers to know the OS the client are using. So let's add a new 'os-version' capability to the v2 protocol, in the same way as the existing 'agent' capability that lets clients and servers exchange the Git version they are running. This sends the same info as `git bugreport` is already sending, which uses uname(2). It should be the same as what `uname -srvm` returns, except that it is sanitized in the same way as the Git version sent by the 'agent' capability is sanitized (by replacing character having an ascii code less than 32 or more than 127 with '.'). CI tests are currently failing on Windows as it looks like uname(1) and uname(2) don't report the same thing: -os-version=MINGW64_NT-10.0-20348.3.4.10-87d57229.x86_64.2024-02-14.20:17.UTC.x86_64 +os-version=Windows.10.0.20348 (See: https://github.com/chriscool/git/actions/runs/9581822699) Thoughts? Christian Couder (3): version: refactor strbuf_sanitize() version: refactor get_uname_info() connect: advertise OS version Documentation/gitprotocol-v2.txt | 18 +++++++++ builtin/bugreport.c | 13 +------ connect.c | 3 ++ serve.c | 12 ++++++ t/t5555-http-smart-common.sh | 3 ++ t/t5701-git-serve.sh | 3 ++ version.c | 67 ++++++++++++++++++++++++++++---- version.h | 10 +++++ 8 files changed, 111 insertions(+), 18 deletions(-) -- 2.45.2.563.g6aa460b3cb