Merge branch 'tb/save-keep-pack-during-geometric-repack'
When geometric repacking feature is in use together with the --pack-kept-objects option, we lost packs marked with .keep files. * tb/save-keep-pack-during-geometric-repack: repack: don't remove .keep packs with `--pack-kept-objects`
This commit is contained in:
commit
f62c546455
@ -1089,6 +1089,11 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
|
|||||||
strbuf_addstr(&buf, pack_basename(p));
|
strbuf_addstr(&buf, pack_basename(p));
|
||||||
strbuf_strip_suffix(&buf, ".pack");
|
strbuf_strip_suffix(&buf, ".pack");
|
||||||
|
|
||||||
|
if ((p->pack_keep) ||
|
||||||
|
(string_list_has_string(&existing_kept_packs,
|
||||||
|
buf.buf)))
|
||||||
|
continue;
|
||||||
|
|
||||||
remove_redundant_pack(packdir, buf.buf);
|
remove_redundant_pack(packdir, buf.buf);
|
||||||
}
|
}
|
||||||
strbuf_release(&buf);
|
strbuf_release(&buf);
|
||||||
|
@ -426,6 +426,30 @@ test_expect_success '--write-midx -b packs non-kept objects' '
|
|||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success '--write-midx with --pack-kept-objects' '
|
||||||
|
git init repo &&
|
||||||
|
test_when_finished "rm -fr repo" &&
|
||||||
|
(
|
||||||
|
cd repo &&
|
||||||
|
|
||||||
|
test_commit one &&
|
||||||
|
test_commit two &&
|
||||||
|
|
||||||
|
one="$(echo "one" | git pack-objects --revs $objdir/pack/pack)" &&
|
||||||
|
two="$(echo "one..two" | git pack-objects --revs $objdir/pack/pack)" &&
|
||||||
|
|
||||||
|
keep="$objdir/pack/pack-$one.keep" &&
|
||||||
|
touch "$keep" &&
|
||||||
|
|
||||||
|
git repack --write-midx --write-bitmap-index --geometric=2 -d \
|
||||||
|
--pack-kept-objects &&
|
||||||
|
|
||||||
|
test_path_is_file $keep &&
|
||||||
|
test_path_is_file $midx &&
|
||||||
|
test_path_is_file $midx-$(midx_checksum $objdir).bitmap
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success TTY '--quiet disables progress' '
|
test_expect_success TTY '--quiet disables progress' '
|
||||||
test_terminal env GIT_PROGRESS_DELAY=0 \
|
test_terminal env GIT_PROGRESS_DELAY=0 \
|
||||||
git -C midx repack -ad --quiet --write-midx 2>stderr &&
|
git -C midx repack -ad --quiet --write-midx 2>stderr &&
|
||||||
|
@ -176,8 +176,12 @@ test_expect_success '--geometric ignores kept packs' '
|
|||||||
# be repacked, too.
|
# be repacked, too.
|
||||||
git repack --geometric 2 -d --pack-kept-objects &&
|
git repack --geometric 2 -d --pack-kept-objects &&
|
||||||
|
|
||||||
|
# After repacking, two packs remain: one new one (containing the
|
||||||
|
# objects in both the .keep and non-kept pack), and the .keep
|
||||||
|
# pack (since `--pack-kept-objects -d` does not actually delete
|
||||||
|
# the kept pack).
|
||||||
find $objdir/pack -name "*.pack" >after &&
|
find $objdir/pack -name "*.pack" >after &&
|
||||||
test_line_count = 1 after
|
test_line_count = 2 after
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user