| 1 | feature.*:: |
| 2 | The config settings that start with `feature.` modify the defaults of |
| 3 | a group of other config settings. These groups are created by the Git |
| 4 | developer community as recommended defaults and are subject to change. |
| 5 | In particular, new config options may be added with different defaults. |
| 6 | |
| 7 | feature.experimental:: |
| 8 | Enable config options that are new to Git, and are being considered for |
| 9 | future defaults. Config settings included here may be added or removed |
| 10 | with each release, including minor version updates. These settings may |
| 11 | have unintended interactions since they are so new. Please enable this |
| 12 | setting if you are interested in providing feedback on experimental |
| 13 | features. The new default values are: |
| 14 | + |
| 15 | * `fetch.negotiationAlgorithm=skipping` may improve fetch negotiation times by |
| 16 | skipping more commits at a time, reducing the number of round trips. |
| 17 | + |
| 18 | * `pack.useBitmapBoundaryTraversal=true` may improve bitmap traversal times by |
| 19 | walking fewer objects. |
| 20 | + |
| 21 | * `pack.allowPackReuse=multi` may improve the time it takes to create a pack by |
| 22 | reusing objects from multiple packs instead of just one. |
| 23 | + |
| 24 | * `pack.usePathWalk` may speed up packfile creation and make the packfiles be |
| 25 | significantly smaller in the presence of certain filename collisions with Git's |
| 26 | default name-hash. |
| 27 | + |
| 28 | * `init.defaultRefFormat=reftable` causes newly initialized repositories to use |
| 29 | the reftable format for storing references. This new format solves issues with |
| 30 | case-insensitive filesystems, compresses better and performs significantly |
| 31 | better with many use cases. Refer to Documentation/technical/reftable.adoc for |
| 32 | more information on this new storage format. |
| 33 | |
| 34 | feature.manyFiles:: |
| 35 | Enable config options that optimize for repos with many files in the |
| 36 | working directory. With many files, commands such as `git status` and |
| 37 | `git checkout` may be slow and these new defaults improve performance: |
| 38 | + |
| 39 | * `index.skipHash=true` speeds up index writes by not computing a trailing |
| 40 | checksum. Note that this will cause Git versions earlier than 2.13.0 to |
| 41 | refuse to parse the index and Git versions earlier than 2.40.0 will report |
| 42 | a corrupted index during `git fsck`. |
| 43 | + |
| 44 | * `index.version=4` enables path-prefix compression in the index. |
| 45 | + |
| 46 | * `core.untrackedCache=true` enables the untracked cache. This setting assumes |
| 47 | that mtime is working on your machine. |