Re: [PATCH 2/2] index-pack: use streaming interface on large blobs (most of the time)
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 18, 2012, 22:20 UTC
- Message-ID
- <xmqqzk95168w.fsf@junio.mtv.corp.google.com>
- In-Reply-To
- <1337172630-23679-2-git-send-email-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes:
Show 11 quoted lines
> unpack_raw_entry() will not allocate and return decompressed blobs if > they are larger than core.bigFileThreshold. > > The blob content is needed by sha1_object() in some cases. When we do > need the blob content, we put it back in core with > get_data_from_pack(). However we rarely need that in pratice. > > The first case is when we find an in-repo blob with the same SHA-1. We > need to do collision test, byte-on-byte. Normally (e.g. in > fetch/pull/clone) this does not happen because git avoid to send > objects that client already has.
Perhaps the codepath that performs the byte-for-byte comparison can be taught to stream from the received pack data and whatever was already in the repository, using the streaming interface? That way you do not have to hold all of the both objects at the same time in core, no?