On Fri, Nov 15, 2019 at 03:15:36PM +0100, Christian Couder wrote: > From: Jeff King <peff@xxxxxxxx> > > We will no longer compute bitmap_git->reuse_objects in a > following commit, so we cannot rely on it anymore to > terminate the loop early; we have to iterate to the end. Hmm. In my original work from 2015 (which you never saw as individual commits), this came somewhere in the middle, after moving to per-object reuse. I think by dropping these hunks now, the state of the code at this point would mean that we might write the objects twice. We'd mark them as "reused" and send them as part of write_reused_pack(). But we'd also send them to pack-objects via the show_reachable_fn callback, and it would add them to the usual packing list. And indeed, t5310.10 fails at this point in the series with: Cloning into bare repository 'clone.git'... remote: Enumerating objects: 331, done. remote: Counting objects: 100% (331/331), done. remote: Compressing objects: 100% (111/111), done. remote: Total 662 (delta 108), reused 331 (delta 108), pack-reused 331 Receiving objects: 100% (662/662), 53.14 KiB | 17.71 MiB/s, done. Resolving deltas: 100% (216/216), done. fatal: The same object 00c1d3730931e66eb08dabe3a3c9fa16621d728a appears twice in the pack fatal: index-pack failed and then starts working again after the final patch. -Peff