]> git.ipfire.org Git - thirdparty/git.git/commit
object-file: refactor writing objects via a stream
authorPatrick Steinhardt <ps@pks.im>
Mon, 3 Nov 2025 07:42:08 +0000 (08:42 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 3 Nov 2025 20:18:48 +0000 (12:18 -0800)
commit3e5e360888316ed1a44da69bf134bb6ec70aee1b
treeb1d04c153f051a909c4f57f522c3e4120735410e
parentbfb1b2b4ac5cfa99f7d2503b404d282714d84bdf
object-file: refactor writing objects via a stream

We have two different ways to write an object into the database:

  - We either provide the full buffer and write the object all at once.

  - Or we provide an input stream that has a `read()` function so that
    we can chunk the object.

The latter is especially used for large objects, where it may be too
expensive to hold the complete object in memory all at once.

While we already have `odb_write_object()` at the ODB-layer, we don't
have an equivalent for streaming an object. Introduce a new function
`odb_write_object_stream()` to address this gap so that callers don't
have to be aware of the inner workings of how to stream an object to
disk with a specific object source.

Rename `stream_loose_object()` to `odb_source_loose_write_stream()` to
clarify its scope. This matches our modern best practices around how to
name functions.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/unpack-objects.c
object-file.c
object-file.h
odb.c
odb.h