> From: Derrick Stolee <[email protected]>
>
> To repack using a multi-pack-index, first sort all pack-files by
> their modified time. Second, walk those pack-files from oldest
> to newest, adding the packs to a list if they are smaller than the
> given pack-size. Finally, collect the objects from the multi-pack-
> index that are in those packs and send them to 'git pack-objects'.
Also mention that we stop once the total is at least the batch size.
> +test_expect_success 'repack creates a new pack' '
> + (
> + cd dup &&
> + SECOND_SMALLEST_SIZE=$(ls -l .git/objects/pack/*pack | awk
> "{print \$5;}" | sort -n | head -n 2 | tail -n 1) &&
> + BATCH_SIZE=$(($SECOND_SMALLEST_SIZE + 1)) &&
> + git multi-pack-index repack --batch-size=$BATCH_SIZE &&
> + ls .git/objects/pack/*idx >idx-list &&
> + test_line_count = 5 idx-list &&
> + test-tool read-midx .git/objects | grep idx >midx-list &&
> + test_line_count = 5 midx-list
> + )
> +'
Can there be a test_line_count of the output of ls at the beginning, so
that we do not have to look at the previous test to indeed see that the
5 is greater than before?
Also add a test to check what happens when we have 3 packs below the
batch size, but taking 2 of them together is sufficient to exceed the
batch size.
> +test_expect_success 'expire removes repacked packs' '
> + (
> + cd dup &&
> + ls -S .git/objects/pack/*pack | head -n 3 >expect &&
> + git multi-pack-index expire &&
> + ls -S .git/objects/pack/*pack >actual &&
> + test_cmp expect actual &&
> + test-tool read-midx .git/objects | grep idx >midx-list &&
> + test_line_count = 3 midx-list
> + )
> +'
Same comment as above.