@leeloo yeah merges are commits with multiple parents!
pack files are a storage optimization for storing objects (commits, trees, blobs). I left it out because it’s really an implementation detail /optimization IMO
and like you said diffs aren’t stored in .git, they’re computed on the fly