This series fixes a pair of bugs that were originally pointed out by Gregory Szorc in [1]. Namely, that both `git multi-pack-index repack` and `git multi-pack-index expire` can cause us to "absorb" the cruft pack, distributing its objects into a new pack, and removing its metadata. This is worth avoiding, since even though it doesn't result in object corruption, this bug removes semi-important metadata contained in the .mtimes file, which controls how fast objects leave the repository during a pruning GC. This series teaches both sub-commands to avoid any cruft pack(s), preserving their metadata. Thanks in advance for your review. [1]: https://lore.kernel.org/git/CAKQoGanPBec6wRO6uWrETaoJXdszpjRWytXaJwx6jw0mrrj-gQ@xxxxxxxxxxxxxx/ Taylor Blau (7): Documentation/git-multi-pack-index.txt: fix typo Documentation/git-multi-pack-index.txt: clarify expire behavior midx.c: prevent `expire` from removing the cruft pack midx.c: avoid cruft packs with `repack --batch-size=0` midx.c: replace `xcalloc()` with `CALLOC_ARRAY()` midx.c: remove unnecessary loop condition midx.c: avoid cruft packs with non-zero `repack --batch-size` Documentation/git-multi-pack-index.txt | 7 +- midx.c | 12 +++- t/t5319-multi-pack-index.sh | 94 ++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 6 deletions(-) -- 2.37.0.1.g1379af2e9d