Skip to content

Commit a897ab7

Browse files
chooglengitster
authored andcommitted
gc: perform incremental repack when implictly enabled
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 e841a79 (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 always 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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent dc55708 commit a897ab7

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

builtin/gc.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,12 +1049,11 @@ static int maintenance_task_loose_objects(struct maintenance_run_opts *opts)
10491049
static int incremental_repack_auto_condition(void)
10501050
{
10511051
struct packed_git *p;
1052-
int enabled;
10531052
int incremental_repack_auto_limit = 10;
10541053
int count = 0;
10551054

1056-
if (git_config_get_bool("core.multiPackIndex", &enabled) ||
1057-
!enabled)
1055+
prepare_repo_settings(the_repository);
1056+
if (!the_repository->settings.core_multi_pack_index)
10581057
return 0;
10591058

10601059
git_config_get_int("maintenance.incremental-repack.auto",

t/t7900-maintenance.sh

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -336,15 +336,15 @@ test_expect_success EXPENSIVE 'incremental-repack 2g limit' '
336336
--no-progress --batch-size=2147483647 <run-2g.txt
337337
'
338338

339-
test_expect_success 'maintenance.incremental-repack.auto' '
339+
run_incremental_repack_and_verify () {
340+
test_commit A &&
340341
git repack -adk &&
341-
git config core.multiPackIndex true &&
342342
git multi-pack-index write &&
343343
GIT_TRACE2_EVENT="$(pwd)/midx-init.txt" git \
344344
-c maintenance.incremental-repack.auto=1 \
345345
maintenance run --auto --task=incremental-repack 2>/dev/null &&
346346
test_subcommand ! git multi-pack-index write --no-progress <midx-init.txt &&
347-
test_commit A &&
347+
test_commit B &&
348348
git pack-objects --revs .git/objects/pack/pack <<-\EOF &&
349349
HEAD
350350
^HEAD~1
@@ -353,7 +353,7 @@ test_expect_success 'maintenance.incremental-repack.auto' '
353353
-c maintenance.incremental-repack.auto=2 \
354354
maintenance run --auto --task=incremental-repack 2>/dev/null &&
355355
test_subcommand ! git multi-pack-index write --no-progress <trace-A &&
356-
test_commit B &&
356+
test_commit C &&
357357
git pack-objects --revs .git/objects/pack/pack <<-\EOF &&
358358
HEAD
359359
^HEAD~1
@@ -362,6 +362,26 @@ test_expect_success 'maintenance.incremental-repack.auto' '
362362
-c maintenance.incremental-repack.auto=2 \
363363
maintenance run --auto --task=incremental-repack 2>/dev/null &&
364364
test_subcommand git multi-pack-index write --no-progress <trace-B
365+
}
366+
367+
test_expect_success 'maintenance.incremental-repack.auto' '
368+
rm -rf incremental-repack-true &&
369+
git init incremental-repack-true &&
370+
(
371+
cd incremental-repack-true &&
372+
git config core.multiPackIndex true &&
373+
run_incremental_repack_and_verify
374+
)
375+
'
376+
377+
test_expect_success 'maintenance.incremental-repack.auto (when config is unset)' '
378+
rm -rf incremental-repack-unset &&
379+
git init incremental-repack-unset &&
380+
(
381+
cd incremental-repack-unset &&
382+
test_unconfig core.multiPackIndex &&
383+
run_incremental_repack_and_verify
384+
)
365385
'
366386

367387
test_expect_success 'pack-refs task' '

0 commit comments

Comments
 (0)