midx.c: avoid cruft packs with repack --batch-size=0
The `repack` sub-command of the `git multi-pack-index` builtin creates a new pack aggregating smaller packs contained in the MIDX up to some given `--batch-size`. When `--batch-size=0`, this instructs the MIDX builtin to repack everything contained in the MIDX into a single pack. In similar spirit as a previous commit, it is undesirable to repack the contents of a cruft pack in this step. Teach `repack` to ignore any cruft pack(s) when `--batch-size=0` for the same reason(s). (The case of a non-zero `--batch-size` will be handled in a subsequent commit). Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
757d457907
commit
d9f7721450
2
midx.c
2
midx.c
@ -1895,6 +1895,8 @@ static int fill_included_packs_all(struct repository *r,
|
||||
continue;
|
||||
if (!pack_kept_objects && m->packs[i]->pack_keep)
|
||||
continue;
|
||||
if (m->packs[i]->is_cruft)
|
||||
continue;
|
||||
|
||||
include_pack[i] = 1;
|
||||
count++;
|
||||
|
@ -784,6 +784,29 @@ test_expect_success 'repack creates a new pack' '
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'repack (all) ignores cruft pack' '
|
||||
git init repo &&
|
||||
test_when_finished "rm -fr repo" &&
|
||||
(
|
||||
cd repo &&
|
||||
|
||||
test_commit base &&
|
||||
test_commit --no-tag unreachable &&
|
||||
|
||||
git reset --hard base &&
|
||||
git reflog expire --all --expire=all &&
|
||||
git repack --cruft -d &&
|
||||
|
||||
git multi-pack-index write &&
|
||||
|
||||
find $objdir/pack | sort >before &&
|
||||
git multi-pack-index repack --batch-size=0 &&
|
||||
find $objdir/pack | sort >after &&
|
||||
|
||||
test_cmp before after
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'expire removes repacked packs' '
|
||||
(
|
||||
cd dup &&
|
||||
|
Loading…
Reference in New Issue
Block a user