Merge branch 'jn/experimental-opts-into-proto-v2'

"feature.experimental" configuration variable is to let volunteers
easily opt into a set of newer features, which use of the v2
transport protocol is now a part of.

* jn/experimental-opts-into-proto-v2:
  config: let feature.experimental imply protocol.version=2
This commit is contained in:
Junio C Hamano 2020-06-02 13:35:01 -07:00
commit 51b4708811
3 changed files with 10 additions and 1 deletions

View File

@ -22,6 +22,10 @@ existing commit-graph file(s). Occasionally, these files will merge and the
write may take longer. Having an updated commit-graph file helps performance
of many Git commands, including `git merge-base`, `git push -f`, and
`git log --graph`.
+
* `protocol.version=2` speeds up fetches from repositories with many refs by
allowing the client to specify which refs to list before the server lists
them.
feature.manyFiles::
Enable config options that optimize for repos with many files in the

View File

@ -48,7 +48,8 @@ protocol.version::
If set, clients will attempt to communicate with a server
using the specified protocol version. If the server does
not support it, communication falls back to version 0.
If unset, the default is `0`.
If unset, the default is `0`, unless `feature.experimental`
is enabled, in which case the default is `2`.
Supported versions:
+
--

View File

@ -17,6 +17,7 @@ static enum protocol_version parse_protocol_version(const char *value)
enum protocol_version get_protocol_version_config(void)
{
const char *value;
int val;
const char *git_test_k = "GIT_TEST_PROTOCOL_VERSION";
const char *git_test_v;
@ -30,6 +31,9 @@ enum protocol_version get_protocol_version_config(void)
return version;
}
if (!git_config_get_bool("feature.experimental", &val) && val)
return protocol_v2;
git_test_v = getenv(git_test_k);
if (git_test_v && *git_test_v) {
enum protocol_version env = parse_protocol_version(git_test_v);