On Sun, May 07, 2006 at 06:08:03PM +1200, Martin Langhoff wrote: > >> And in any case commits and trees are lightweight and compress well... > >Commit maybe, but is this based on a hard fact? > No hard facts here :( but I think it's reasonable to assume that the > trees delta/compress reasonably well, as a given commit will change > just a few entries in each tree. A few hard facts (using Linus' linux-2.6 tree): - original packsize: 120996 kilobytes - unpacked: 233338 objects, 1417476 kilobytes This is an 11.7:1 compression ratio (of course, much of this is wasted space from the 4k block size in the filesystem) - There were 87915 total blob objects, of which 19321 were in the current tree. I removed all non-current blobs to produce a "shallow" tree. - The shallow tree unpacked: 164744 objects, 761960 kilobytes IOW, about half of the unpacked disk usage was old blobs. - Shallow commit/tree/tag objects packed (using 1.3.1 git-pack-objects): Total 164744, written 164744 (delta 92322), reused 0 (delta 0) size: 108088 The compression ratio here is only 7.0:1 - Total savings by going shallow: 10.7% So basically, trees and commits DON'T compress as well as historical blobs (potentially because git-pack-objects isn't currently optimized for this -- I haven't checked). As a result, we're saving only 10% by going shallow instead of a potential 50%. -Peff - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html