Subject: Why is the name of a blob SHA1("$type $size\0$data") and not SHA1("$data")?

From: David Srbecky <[email-masked]>
Date: Thu, 30 Apr 2009 20:55:00 +0100

Hi,

First of all, congratulations on makeing such a great version control 
system.  I love the storage model - in comparison with other systems, it 
is just birantly simple and ingenious.

I started digging into the details and there is one thing that is really 
bugging me - why is the name of a blob SHA1("$type $size\0$data") and 
not SHA1("$data")?  I mean, wouldn't it be beautiful if the name of the 
blob would really just be the SHA1 of the uncompressed file content? :-)

Furthermore, is the header really necessary?  Wouldn't it be 
eqvivalently effective to put the blobs into own subdirectory? For 
example:  .git\objects\blob\22\22a3d28c5b2fca0eae83be1a2ed619e357f6a1e6
So the blob would contatin just be the compressed content and nothing 
else - beautiful :-)

I would really appriciate some comments on the design decisions so that 
I can sleep well at night :-)

David