[PATCH 00/11] Large blob fixes
From: Nguyễn Thái Ngọc Duy <hidden>
Date: 2016-06-15 22:53:09
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 blobs
archive-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