config: let feature.experimental imply protocol.version=2
commit3697caf4b962f65430fdcd6f0d41b7fe1f579e18
authorJonathan Nieder <jrnieder@gmail.com>
Thu, 21 May 2020 02:15:33 +0000 (20 19:15 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 21 May 2020 16:31:42 +0000 (21 09:31 -0700)
tree32cde3fdf82684fc75c48442fd99ba2a3237d4f9
parent87680d32efb6d14f162e54ad3bda4e3d6c908559
config: let feature.experimental imply protocol.version=2

Git 2.26 used protocol v2 as its default protocol, but soon after
release, users noticed that the protocol v2 negotiation code was prone
to fail when fetching from some remotes that are far ahead of others
(such as linux-next.git versus Linus's linux.git).  That has been
fixed by 0b07eecf6ed (Merge branch 'jt/v2-fetch-nego-fix',
2020-05-01), but to be cautious, we are using protocol v0 as the
default in 2.27 to buy some time for any other unanticipated issues to
surface.

To that end, let's ensure that users requesting the bleeding edge
using the feature.experimental flag *do* get protocol v2.  This way,
we can gain experience with a wider audience for the new protocol
version and be more confident when it is time to enable it by default
for all users in some future Git version.

Implementation note: this isn't with the rest of the
feature.experimental options in repo-settings.c because those are tied
to a repository object, whereas this code path is used for operations
like "git ls-remote" that do not require a repository.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config/feature.txt
Documentation/config/protocol.txt
protocol.c