Re: [PATCH v2] Document pack v4 format
- From
Nicolas Pitre <nico@fluxnic.net>
- Date
- Sep 6, 2013, 13:19 UTC
- Message-ID
- <alpine.LFD.2.03.1309060916400.20709@syhkavp.arg>
- In-Reply-To
- <CACsJy8BbxKfX_Ho8Nu2fvTp1xWYcaGPgwf6=iq0bZ4KSE+r6bw@mail.gmail.com>
On Fri, 6 Sep 2013, Duy Nguyen wrote:
Show 24 quoted lines
> On Thu, Sep 5, 2013 at 11:52 PM, Duy Nguyen <pclouds@gmail.com> wrote: > > On Thu, Sep 5, 2013 at 12:39 PM, Nicolas Pitre <nico@fluxnic.net> wrote: > >> Now the pack index v3 probably needs to be improved a little, again to > >> accommodate completion of thin packs. Given that the main SHA1 table is > >> now in the main pack file, it should be possible to still carry a small > >> SHA1 table in the index file that corresponds to the appended objects > >> only. This means that a SHA1 search will have to first use the main SHA1 > >> table in the pack file as it is done now, and if not found then use the > >> SHA1 table in the index file if it exists. And of course > >> nth_packed_object_sha1() will have to be adjusted accordingly. > > > > What if the sender prepares the sha-1 table to contain missing objects > > in advance? The sender should know what base objects are missing. Then > > we only need to append objects at the receiving end and verify that > > all new objects are also present in the sha-1 table. > > One minor detail to sort out: the size of sha-1 table. Previously it's > the number of objects in the pack. Now it's not true because the table > may have more entries. So how should we record the table size? We > could use null sha-1 as the end of table marker. Or we could make > pack-objects to write nr_objects as the number of entries _after_ pack > completion, not the true number of objects in thin pack. I like the > latter (no more rehashing the entire pack after completion) but then > we need a cue to know that we have reached the end of the pack..
See the amendment I made to your documentation patch. I opted for the later. To mark the end of the transmitted objects a zero byte (object type 0) is used.
Nicolas