> The multi-pack-index provides a fast way to find an object among a large > list of pack-files. It stores a single pack-reference for each object id, so > duplicate objects are ignored. Among a list of pack-files storing the same > object, the most-recently modified one is used. > > Create new subcommands for the multi-pack-index builtin. > > * 'git multi-pack-index expire': If we have a pack-file indexed by the > multi-pack-index, but all objects in that pack are duplicated in > more-recently modified packs, then delete that pack (and any others like > it). Delete the reference to that pack in the multi-pack-index. > > > * 'git multi-pack-index repack --batch-size=': Starting from the oldest > pack-files covered by the multi-pack-index, find those whose on-disk size > is below the batch size until we have a collection of packs whose sizes > add up to the batch size. Create a new pack containing all objects that > the multi-pack-index references to those packs. [snip] Thanks - as you further explain in the snipped part, this is very useful for users of repositories that use MIDX. I only have minor comments (that I have written in individual replies) and the series overall looks good to me. I personally would have squashed patches 3 and 7 (the "prepare for" patches) into the patches that implement the respective commands, because I'd rather not have points where the commands don't work. Having said that, rebase is probably not going to be affected, so I don't feel strongly about this.