Message ID | 095b43f606a352527c9e0551adbd8a6af2061176.1571863137.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | index.version is not parsed correctly | expand |
spelling nit. On 23/10/2019 21:38, Derrick Stolee via GitGitGadget wrote: > From: Derrick Stolee<dstolee@microsoft.com> > > Several config options were combined into a repo_settings struct in > ds/feature-macros, including a move of the "index.version" config > setting in 7211b9e (repo-settings: consolidate some config settings, > 2019-08-13). > > Unfortunately, that file looked like a lot of boilerplate and what is > clearly a factor of copy-paste overload, the config setting is parsed > with repo_config_ge_bool() instead of repo_config_get_int(). This means s/_ge_bool()/_get_bool()/ > that a setting "index.version=4" would not register correctly and would > revert to the default version of 3. > > I caught this while incorporating v2.24.0-rc0 into the VFS for Git > codebase, where we really care that the index is in version 4. > > This was not caught by the codebase because the version checks placed > in t1600-index.sh did not test the "basic" scenario enough. Here, we > modify the test to include these normal settings to not be overridden by > features.manyFiles or GIT_INDEX_VERSION. While the "default" version is > 3, this is demoted to version 2 in do_write_index() when not necessary. > > Signed-off-by: Derrick Stolee<dstolee@microsoft.com> > --- Philip
diff --git a/repo-settings.c b/repo-settings.c index 05546db98e..a703e407a3 100644 --- a/repo-settings.c +++ b/repo-settings.c @@ -22,7 +22,7 @@ void prepare_repo_settings(struct repository *r) UPDATE_DEFAULT_BOOL(r->settings.core_commit_graph, 1); UPDATE_DEFAULT_BOOL(r->settings.gc_write_commit_graph, 1); - if (!repo_config_get_bool(r, "index.version", &value)) + if (!repo_config_get_int(r, "index.version", &value)) r->settings.index_version = value; if (!repo_config_get_maybe_bool(r, "core.untrackedcache", &value)) { if (value == 0) diff --git a/t/t1600-index.sh b/t/t1600-index.sh index c77721b580..b7c31aa86a 100755 --- a/t/t1600-index.sh +++ b/t/t1600-index.sh @@ -87,6 +87,10 @@ test_index_version () { } test_expect_success 'index version config precedence' ' + test_index_version 0 false 0 2 && + test_index_version 2 false 0 2 && + test_index_version 3 false 0 2 && + test_index_version 4 false 0 4 && test_index_version 2 false 4 4 && test_index_version 2 true 0 2 && test_index_version 0 true 0 4 &&