From: Jakub Narebski Date: Sat, 08 Oct 2011 16:36:32 GMT Subject: Re: How pretty is pretty? git cat-file -p inconsistency Message-ID: <201110081836.33941.jnareb@gmail.com> In-Reply-To: <4E906292.1020909@drmicha.warpmail.net> 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: > > > > SPC NUL > > > > where > > > > 1. 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. is variable-length null-terminated ("\0") name of a file > > or directory, or name of directory where submodule is attached > > > > 3. 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 SPC NUL 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