3697caf4b9
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 0b07eecf6e
(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>
39 lines
1.9 KiB
Plaintext
39 lines
1.9 KiB
Plaintext
feature.*::
|
|
The config settings that start with `feature.` modify the defaults of
|
|
a group of other config settings. These groups are created by the Git
|
|
developer community as recommended defaults and are subject to change.
|
|
In particular, new config options may be added with different defaults.
|
|
|
|
feature.experimental::
|
|
Enable config options that are new to Git, and are being considered for
|
|
future defaults. Config settings included here may be added or removed
|
|
with each release, including minor version updates. These settings may
|
|
have unintended interactions since they are so new. Please enable this
|
|
setting if you are interested in providing feedback on experimental
|
|
features. The new default values are:
|
|
+
|
|
* `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by
|
|
skipping more commits at a time, reducing the number of round trips.
|
|
+
|
|
* `fetch.writeCommitGraph=true` writes a commit-graph after every `git fetch`
|
|
command that downloads a pack-file from a remote. Using the `--split` option,
|
|
most executions will create a very small commit-graph file on top of the
|
|
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
|
|
working directory. With many files, commands such as `git status` and
|
|
`git checkout` may be slow and these new defaults improve performance:
|
|
+
|
|
* `index.version=4` enables path-prefix compression in the index.
|
|
+
|
|
* `core.untrackedCache=true` enables the untracked cache. This setting assumes
|
|
that mtime is working on your machine.
|