I figured it would be easier for everyone if I rolled this all into one series instead of Junio & us needing to keep track of what's based on what. The only change I made to Jeff's patches is my SOB and adding a paragraph to the end of his 3/3 saying that the v2 push protocol doesn't have the same issue (because it doesn't exist yet). I had that question in this thread, and thought it was useful to clarify it. No changes to Jonathan's one patch, except my SOB. For the rest I incorporated Jonathan's suggestions / fixes with some amendments. The suggestion to use env --unset isn't portable (and there's now a check for that while we're at it), so instead we support "GIT_TEST_PROTOCOL_VERSION=" which'll ignore the environment value. Other changes in my patches are more narrowly skipping tests, i.e. no "unset" anymore except for those tests where we're only doing v1 and v2 tests. I also removed the "env" use in those cases that don't need it (where we use e.g. test_must_fail), instead we just set the env variable ourselves with native shell syntax. Jeff King (3): serve: pass "config context" through to individual commands parse_hide_refs_config: handle NULL section upload-pack: support hidden refs with protocol v2 Jonathan Tan (1): builtin/fetch-pack: support protocol version 2 Ævar Arnfjörð Bjarmason (4): tests: add a check for unportable env --unset tests: add a special setup where for protocol.version tests: mark & fix tests broken under GIT_TEST_PROTOCOL_VERSION=1 tests: mark tests broken under GIT_TEST_PROTOCOL_VERSION=2 builtin/fetch-pack.c | 9 ++++++--- builtin/upload-pack.c | 1 + ls-refs.c | 16 +++++++++++++++- ls-refs.h | 3 ++- protocol.c | 13 ++++++++++++- refs.c | 3 ++- serve.c | 9 +++++---- serve.h | 7 +++++++ t/README | 6 ++++++ t/check-non-portable-shell.pl | 1 + t/t0410-partial-clone.sh | 3 ++- t/t5400-send-pack.sh | 2 +- t/t5500-fetch-pack.sh | 9 ++++++--- t/t5503-tagfollow.sh | 8 ++++---- t/t5512-ls-remote.sh | 14 ++++++++++---- t/t5515-fetch-merge-logic.sh | 2 +- t/t5516-fetch-push.sh | 20 +++++++++++++------- t/t5537-fetch-shallow.sh | 3 ++- t/t5539-fetch-http-shallow.sh | 9 +++++---- t/t5541-http-push-smart.sh | 9 +++++++-- t/t5551-http-fetch-smart.sh | 19 +++++++++++-------- t/t5552-skipping-fetch-negotiator.sh | 4 ++-- t/t5570-git-daemon.sh | 2 +- t/t5601-clone.sh | 11 +++++++++-- t/t5700-protocol-v1.sh | 1 + t/t5702-protocol-v2.sh | 1 + t/t7406-submodule-update.sh | 3 ++- upload-pack.c | 4 ++-- upload-pack.h | 4 ++-- 29 files changed, 139 insertions(+), 57 deletions(-) -- 2.20.0.405.gbc1bbc6f85