Jonathan Tan <jonathantanmy@xxxxxxxxxx> writes: > One simplification that we could do is to eliminate the unpack-objects > codepath. As far as I understand, the main advantage of writing loose > objects is that we have automatic SHA-1 collision detection, but we have > such mitigations when writing packs too, so that might not be as large a > benefit as we think. This simplification would have enabled us to avoid > this bug, I think. My understanding is that the primary advantage of loose objects codepath is to help us avoid having too many little packs (instead, we can accumulate enough objects in the loose form and let GC pack them, at least the ones among them that are still reachable, into a single pack). Historically, the only mode of operation "repack" offers that reduces the number of remaining packs has been "do full reachability of the entire history, and pack everything into one", so avoiding creation of little packs and leaving things loose until we accumulate enough used to matter. With the geometric rolling repacking, it may not matter as much, and keeping everything packed, even in a small pack, might start to be overall win. So I am not opposed to such a simplification; we may not be ready for it right now, but I think it would be a sensible future direction.