diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-06-02 13:35:01 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-06-02 13:35:01 -0700 |
commit | 51b47088112d4d4521d6f07c51f70c3ab4e07b63 (patch) | |
tree | a7b9028288987d465188f4652b0875abc29e57b2 | |
parent | Merge branch 'bk/p4-prepare-p4-only-fix' (diff) | |
parent | config: let feature.experimental imply protocol.version=2 (diff) | |
download | tgif-51b47088112d4d4521d6f07c51f70c3ab4e07b63.tar.xz |
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
-rw-r--r-- | Documentation/config/feature.txt | 4 | ||||
-rw-r--r-- | Documentation/config/protocol.txt | 3 | ||||
-rw-r--r-- | protocol.c | 4 |
3 files changed, 10 insertions, 1 deletions
diff --git a/Documentation/config/feature.txt b/Documentation/config/feature.txt index 4e3a5c0ceb..28c33602d5 100644 --- a/Documentation/config/feature.txt +++ b/Documentation/config/feature.txt @@ -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 diff --git a/Documentation/config/protocol.txt b/Documentation/config/protocol.txt index 0b40141613..c46e9b3d00 100644 --- a/Documentation/config/protocol.txt +++ b/Documentation/config/protocol.txt @@ -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: + -- diff --git a/protocol.c b/protocol.c index d390391eba..d1dd3424bb 100644 --- a/protocol.c +++ b/protocol.c @@ -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); |