File tree Expand file tree Collapse file tree 6 files changed +51
-7
lines changed
Expand file tree Collapse file tree 6 files changed +51
-7
lines changed Original file line number Diff line number Diff line change @@ -345,6 +345,8 @@ include::config/difftool.txt[]
345345
346346include::config/fastimport.txt[]
347347
348+ include::config/feature.txt[]
349+
348350include::config/fetch.txt[]
349351
350352include::config/format.txt[]
Original file line number Diff line number Diff line change @@ -86,7 +86,9 @@ core.untrackedCache::
8686 it will automatically be removed, if set to `false`. Before
8787 setting it to `true`, you should check that mtime is working
8888 properly on your system.
89- See linkgit:git-update-index[1]. `keep` by default.
89+ See linkgit:git-update-index[1]. `keep` by default, unless
90+ `feature.manyFiles` is enabled which sets this setting to
91+ `true` by default.
9092
9193core.checkStat::
9294 When missing or is set to `default`, many fields in the stat
Original file line number Diff line number Diff line change 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.manyFiles::
8+ Enable config options that optimize for repos with many files in the
9+ working directory. With many files, commands such as `git status` and
10+ `git checkout` may be slow and these new defaults improve performance:
11+ +
12+ * `index.version=4` enables path-prefix compression in the index.
13+ +
14+ * `core.untrackedCache=true` enables the untracked cache. This setting assumes
15+ that mtime is working on your machine.
Original file line number Diff line number Diff line change @@ -24,3 +24,4 @@ index.threads::
2424index.version::
2525 Specify the version with which new index files should be
2626 initialized. This does not affect existing repositories.
27+ If `feature.manyFiles` is enabled, then the default is 4.
Original file line number Diff line number Diff line change @@ -36,9 +36,12 @@ void prepare_repo_settings(struct repository *r)
3636 free (strval );
3737 }
3838
39-
4039 if (!repo_config_get_bool (r , "pack.usesparse" , & value ))
4140 r -> settings .pack_use_sparse = value ;
41+ if (!repo_config_get_bool (r , "feature.manyfiles" , & value ) && value ) {
42+ UPDATE_DEFAULT_BOOL (r -> settings .index_version , 4 );
43+ UPDATE_DEFAULT_BOOL (r -> settings .core_untracked_cache , UNTRACKED_CACHE_WRITE );
44+ }
4245
4346 /* Hack for test programs like test-dump-untracked-cache */
4447 if (ignore_untracked_cache_config )
Original file line number Diff line number Diff line change @@ -59,17 +59,38 @@ test_expect_success 'out of bounds index.version issues warning' '
5959 )
6060'
6161
62- test_expect_success ' GIT_INDEX_VERSION takes precedence over config' '
62+ test_index_version () {
63+ INDEX_VERSION_CONFIG=$1 &&
64+ FEATURE_MANY_FILES=$2 &&
65+ ENV_VAR_VERSION=$3
66+ EXPECTED_OUTPUT_VERSION=$4 &&
6367 (
6468 rm -f .git/index &&
65- GIT_INDEX_VERSION=4 &&
66- export GIT_INDEX_VERSION &&
67- git config --add index.version 2 &&
69+ rm -f .git/config &&
70+ if test " $INDEX_VERSION_CONFIG " -ne 0
71+ then
72+ git config --add index.version $INDEX_VERSION_CONFIG
73+ fi &&
74+ git config --add feature.manyFiles $FEATURE_MANY_FILES
75+ if test " $ENV_VAR_VERSION " -ne 0
76+ then
77+ GIT_INDEX_VERSION=$ENV_VAR_VERSION &&
78+ export GIT_INDEX_VERSION
79+ else
80+ unset GIT_INDEX_VERSION
81+ fi &&
6882 git add a 2>&1 &&
69- echo 4 >expect &&
83+ echo $EXPECTED_OUTPUT_VERSION > expect &&
7084 test-tool index-version < .git/index > actual &&
7185 test_cmp expect actual
7286 )
87+ }
88+
89+ test_expect_success ' index version config precedence' '
90+ test_index_version 2 false 4 4 &&
91+ test_index_version 2 true 0 2 &&
92+ test_index_version 0 true 0 4 &&
93+ test_index_version 0 true 2 2
7394'
7495
7596test_done
You can’t perform that action at this time.
0 commit comments