[PATCH 00/11] Large blob fixes
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Feb 27, 2012, 07:55 UTC
- Message-ID
- <1330329315-11407-1-git-send-email-pclouds@gmail.com>
These patches make sure we avoid keeping whole blob in memory, at least in common cases. Blob-only streaming code paths are opened to accomplish that.
I don't quite like having three different implementations for checking sha-1 signature (one on git_istream, one on packed_git and the other one in index-pack) but I failed to see how to unify them.
Making archive-zip work with stream can be difficult. But at least tar format works. Good enough for me.
Nguyễn Thái Ngọc Duy (11):
Add more large blob test cases
Factor out and export large blob writing code to arbitrary file
handle
cat-file: use streaming interface to print blobs
parse_object: special code path for blobs to avoid putting whole
object in memory
show: use streaming interface for showing blobs
index-pack --verify: skip sha-1 collision test
index-pack: split second pass obj handling into own function
index-pack: reduce memory usage when the pack has large blobs
pack-check: do not unpack blobs
archive: support streaming large files to a tar archive
fsck: use streaming interface for writing lost-found blobsarchive-tar.c | 35 +++++++++++++--- archive-zip.c | 9 ++-- archive.c | 51 ++++++++++++++++-------- archive.h | 11 ++++- builtin/cat-file.c | 22 ++++++++++ builtin/fsck.c | 8 +--- builtin/index-pack.c | 108 +++++++++++++++++++++++++++++++++++++------------ builtin/log.c | 9 ++++- cache.h | 5 ++- entry.c | 39 ++++++++++++------ fast-import.c | 2 +- object.c | 11 +++++ pack-check.c | 21 +++++++++- sha1_file.c | 78 +++++++++++++++++++++++++++++++----- t/t1050-large.sh | 59 +++++++++++++++++++++++++++- wrapper.c | 27 +++++++++++- 16 files changed, 400 insertions(+), 95 deletions(-)
-- 1.7.3.1.256.g2539c.dirty