On Sat, 8 Oct 2011, Michael J Gruber wrote: > Jakub Narebski venit, vidit, dixit 08.10.2011 01:50: > > Tree object consist of zero or more entries. Each item consist of mode, > > filename, and sha1: > > > > <mode> SPC <filename> NUL <sha1> > > > > where > > > > 1. <mode> is variable-length (!) text (!) containing mode of an > > entry. It encodes type of entry: if it is blob (including special > > case: symbolic link), tree i.e. directory, or a commit > > i.e. submodule. Does not include leading zeros. > > > > 2. <filename> is variable-length null-terminated ("\0") name of a file > > or directory, or name of directory where submodule is attached > > > > 3. <sha1> is 40-bytes _binary_ identifier. > > > > HTH > > It does help, thanks. > > Though I'm beginning to think we have a crazy object format. Not only do > we have a lot of indirections (like ascii representation of decimal > representation of length), but we store sha1 as ascii in commit and tag > objects and as binary in tree objects. Which makes tree objects the only > unpleasant ones to look at (and parse) in raw form. (I was hoping we can > dispose of/deprecate cat-file -p in favor of show). Oh well. Well, actually we have pretty consistent format, i.e. we use textual format everywhere (textual size of blob instead of some variable-length integer, textual name of type of object instead of a byte for it, epoch as a text and not 64bit signed int in some network format, hexadecimal sha1, space separated (sub)fields)... ... with the sole exception of tree object, which uses _binary_ sha1. What was Linus thinking?!? To have consistency the tree entry should IMVHO look like this <textual mode> SPC <filename> NUL <hexadecimal sha1> LF Nb. with hexadecimal sha-1 everywhere it would be I think possible (if very very difficult) to move to different hash function: SHA-256, Skein, etc. I don't know if it is now at all possible... -- Jakub Narebski Poland -- To unsubscribe from this list: 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