Re: Understanding version 4 packs
- From
Nicolas Pitre <nico@cam.org>
- Date
- Mar 24, 2007, 23:24 UTC
- Message-ID
- <alpine.LFD.0.83.0703241913110.18328@xanadu.home>
- In-Reply-To
- <20070324202356.GA20734@bohr.gbar.dtu.dk>
On Sat, 24 Mar 2007, Peter Eriksen wrote:
Show 7 quoted lines
> There is a new tree type called OBJ_DICT_TREE, which looks something > like the following: > > +-----------------+------------------------------------------------+---- > | Table offset | SHA-1 of the blob corresponding to the path. | ... > +-----------------+------------------------------------------------+---- > 6 bytes 20 bytes
Actually it is a 2-byte index in the path table, and a 4-byte index in a common SHA1 table. So each tree entry is 6 bytes total.
> These new tree objects will remain uncompressed in the pack file, but > sorted with, and deltaed against other tree objects. All normal tree > objects are converted to OBJ_DICT_TREE when packing, and are converted > back on the fly to callers who need an ordinary OBJ_TREE.
Right.
> The index (.idx) files are extended to have a 4 byte pointer to the > offset of this file name table in the pack file for easy lookup.
Right. And it will lose the SHA1 entries since they are already available in the pack.
Show 6 quoted lines
> There is something similar with a table of common strings in commit > objects (e.g. author and timezone), and a new object OBJ_DICT_COMMIT, > but I have not understood that quite yet. > > Is there something, I have gotten wrong with regards to my > understanding?
I don't think so. Note that the code is still a work in progress and the resulting pack/index is not yet fully conform to the format we envisaged.
Nicolas