• Show log

    Commit

  • Hash : 0a5c6028
    Author : Carlos Martín Nieto
    Date : 2015-11-04T10:30:48

    blob: introduce creating a blob by writing into a stream
    
    The pair of `git_blob_create_frombuffer()` and
    `git_blob_create_frombuffer_commit()` is meant to replace
    `git_blob_create_fromchunks()` by providing a way for a user to write a
    new blob when they want filtering or they do not know the size.
    
    This approach allows the caller to retain control over when to add data
    to this buffer and a more natural fit into higher-level language's own
    stream abstractions instead of having to handle IO wait in the callback.
    
    The in-memory buffer size of 2MB is chosen somewhat arbitrarily to be a
    round multiple of usual page sizes and a value where most blobs seem
    likely to be either going to be way below or way over that size. It's
    also a round number of pages.
    
    This implementation re-uses the helper we have from `_fromchunks()` so
    we end up writing everything to disk, but hopefully more efficiently
    than with a default filebuf. A later optimisation can be to avoid
    writing the in-memory contents to disk, with some extra complexity.