Re: [PATCH 7/8] git-repack --max-pack-size: split packs as asked by write_object/write_one
- From
- Dana How <danahow@gmail.com>
- Date
- May 1, 2007, 06:05 UTC
- Message-ID
- <56b7f5510704302305s5cf0d0cbg52906e400bcc4a22@mail.gmail.com>
- In-Reply-To
- <20070501054034.GB5942@spearce.org>
On 4/30/07, Shawn O. Pearce <spearce@spearce.org> wrote:
Show 18 quoted lines
> Dana How <danahow@gmail.com> wrote:
> > Rewrite write_pack_file() to break to a new packfile
> > whenever write_object/write_one request it, and
> > correct the header's object count in the previous packfile.
> > Change write_index_file() to write an index
> > for just the objects in the most recent packfile.
> ...
> > diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
> ...
> > + hdr.hdr_signature = htonl(PACK_SIGNATURE);
> > + hdr.hdr_version = htonl(PACK_VERSION);
> > + hdr.hdr_entries = htonl(nr_result);
>
> What about keeping track of how many objects in nr_result that
> have been written already in the prior iteration of this do{}
> while loop and using that to set hdr_entries? This way if you are
> splitting into multiple packfiles the last packfile won't need to
> do a header/footer fixup.Cool -- I had the same thought (late), but figured I would address it in a follow-on. I was thinking of adding nr_left, which would be initialized from nr_result, and have nr_written repeatedly subtracted. nr_result in your quote would change to nr_left (also later, where we decide whether or not to fix up the header).
Thanks,
-- Dana L. How danahow@gmail.com +1 650 804 5991 cell