diff options
| author | Justin Tobler <jltobler@gmail.com> | 2026-08-20 18:49:40 -0500 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2026-08-20 20:28:02 -0700 |
| commit | 2154d88f3aef51dda4cd75216dc5749bdafc8852 (patch) | |
| tree | cb4699a7ff809fa27d6c49580084822f1442b851 /t/t4013/diff.diff_initial..side | |
| parent | 40932d0a7e35fa31b1ac237ccc77a0a346ce887d (diff) | |
odb/transaction: add transaction interface to write packfiles
In git-receive-pack(1), the incoming packfile is written to the ODB via
`unpack()`, which spawns git-index-pack(1) or git-unpack-objects(1)
directly. With pluggable object databases, an alternative backend may
need to handle writing packfile data differently though.
Introduce `odb_transaction_write_pack()` as a generic interface to
handle writing a packfile to a transaction and use the logic from
`unpack()` as the "files" backend implementation. Note that when storing
the objects as a packfile, git-index-pack(1) also writes a ".keep"
lockfile next to it to prevent a concurrent repack from removing the new
pack prior to reference updates being performed. The "files" transaction
backend is responsible for managing these ".keep" files and removes them
post-commit once the transaction is finalized.
Call sites in git-receive-pack(1) are updated accordingly.
Signed-off-by: Justin Tobler <jltobler@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t4013/diff.diff_initial..side')
0 files changed, 0 insertions, 0 deletions
