diff options
| author | Carlos Martín Nieto <cmn@dwim.me> | 2015-11-04 10:30:48 -0800 |
|---|---|---|
| committer | Carlos Martín Nieto <cmn@dwim.me> | 2016-03-22 19:34:08 +0100 |
| commit | 0a5c6028898e637544962c2c6b1ef8eeeb9c1d38 (patch) | |
| tree | e4c57cace7cb954ff337a1b67a44efba3b891c26 /include/git2/sys/stream.h | |
| parent | 3fa764edd2a11691876153fef6523375b6e4553d (diff) | |
| download | libgit2-0a5c6028898e637544962c2c6b1ef8eeeb9c1d38.tar.gz | |
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.
Diffstat (limited to 'include/git2/sys/stream.h')
0 files changed, 0 insertions, 0 deletions
