From: Glen Choo Date: Fri, 17 Sep 2021 22:54:59 GMT Subject: [PATCH v2 3/3] gc: perform incremental repack when implictly enabled Message-ID: <20210917225459.68086-4-chooglen@google.com> In-Reply-To: <20210917225459.68086-1-chooglen@google.com> builtin/gc.c has two ways of checking if multi-pack-index is enabled: - git_config_get_bool() in incremental_repack_auto_condition() - the_repository->settings.core_multi_pack_index in maintenance_task_incremental_repack() The two implementations have existed since the incremental-repack task was introduced in e841a79a13 (maintenance: add incremental-repack auto condition, 2020-09-25). These two values can diverge because prepare_repo_settings() enables the feature in the_repository->settings by default. In the case where core.multiPackIndex is not set in the config, the auto condition would fail, causing the incremental-repack task to not be run. Because we always want to consider the default values, we should just always just use the_repository->settings. Standardize on using the_repository->settings.core_multi_pack_index to check if multi-pack-index is enabled. Signed-off-by: Glen Choo --- builtin/gc.c | 5 +-- t/t7900-maintenance.sh | 88 ++++++++++++++++++++++++++++++------------ 2 files changed, 65 insertions(+), 28 deletions(-) diff --git a/builtin/gc.c b/builtin/gc.c index f05d2f0a1a..070b7dccb1 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -1051,12 +1051,11 @@ static int maintenance_task_loose_objects(struct maintenance_run_opts *opts) static int incremental_repack_auto_condition(void) { struct packed_git *p; - int enabled; int incremental_repack_auto_limit = 10; int count = 0; - if (git_config_get_bool("core.multiPackIndex", &enabled) || - !enabled) + prepare_repo_settings(the_repository); + if (!the_repository->settings.core_multi_pack_index) return 0; git_config_get_int("maintenance.incremental-repack.auto", diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh index 58f46c77e6..2c77ddded1 100755 --- a/t/t7900-maintenance.sh +++ b/t/t7900-maintenance.sh @@ -322,31 +322,69 @@ test_expect_success EXPENSIVE 'incremental-repack 2g limit' ' ' test_expect_success 'maintenance.incremental-repack.auto' ' - git repack -adk && - git config core.multiPackIndex true && - git multi-pack-index write && - GIT_TRACE2_EVENT="$(pwd)/midx-init.txt" git \ - -c maintenance.incremental-repack.auto=1 \ - maintenance run --auto --task=incremental-repack 2>/dev/null && - test_subcommand ! git multi-pack-index write --no-progress /dev/null && - test_subcommand ! git multi-pack-index write --no-progress /dev/null && - test_subcommand git multi-pack-index write --no-progress /dev/null && + test_subcommand ! git multi-pack-index write --no-progress /dev/null && + test_subcommand ! git multi-pack-index write --no-progress /dev/null && + test_subcommand git multi-pack-index write --no-progress /dev/null && + test_subcommand ! git multi-pack-index write --no-progress /dev/null && + test_subcommand ! git multi-pack-index write --no-progress /dev/null && + test_subcommand git multi-pack-index write --no-progress