Skip to content

Commit

Permalink
Merge branch 'jn/experimental-opts-into-proto-v2'
Browse files Browse the repository at this point in the history
"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
  • Loading branch information
gitster committed Jun 2, 2020
2 parents 7a8fec9 + 3697caf commit 51b4708
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 1 deletion.
4 changes: 4 additions & 0 deletions Documentation/config/feature.txt
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion Documentation/config/protocol.txt
Expand Up @@ -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:
+
--
Expand Down
4 changes: 4 additions & 0 deletions protocol.c
Expand Up @@ -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;

Expand All @@ -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);
Expand Down

0 comments on commit 51b4708

Please sign in to comment.