From: Jakub Narebski Date: Fri, 07 Oct 2011 23:50:00 GMT Subject: Re: How pretty is pretty? git cat-file -p inconsistency Message-ID: In-Reply-To: <4E8F6088.8060300@drmicha.warpmail.net> Michael J Gruber writes: [cut] > I never knew how ugly the output of "git tag-file tree sha1" is. I guess > it's the type of object whose format I don't know... We don't have an > object format description in Doc/technical, do we? tree.c doesn't tell > me much. I had to handle this in my attempt to write "git blame " in Perl, which was using `git cat-file --batch`, and that gives raw data and not pretty-printed. 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 -- Jakub Narębski