[PATCH 0/7] merge-ort: implement support for packing objects together
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Oct 6, 2023, 22:01 UTC
- Message-ID
- <cover.1696629697.git.me@ttaylorr.com>
(Based on the tip of 'eb/limit-bulk-checkin-to-blobs'.)
This series implements support for a new merge-tree option, `--write-pack`, which causes any newly-written objects to be packed together instead of being stored individually as loose.
The motivating use-case behind these changes is to better support repositories who invoke merge-tree frequently, generating a potentially large number of loose objects, resulting in a possible adverse effect on performance.
The majority of the changes here are preparatory to refactor common routines out of the bulk-checkin machinery to prepare for indexing different types of objects whose contents can be held in-core.
Also worth noting is the relative ease this series can be adapted to support the $NEW_HASH interop work in 'eb/hash-transition-rfc'. For more details on the relatively small number of changes necessary to make that work, see the log message of the second-to-last patch.
Thanks in advance for your review!
Taylor Blau (7): bulk-checkin: factor out `format_object_header_hash()` bulk-checkin: factor out `prepare_checkpoint()` bulk-checkin: factor out `truncate_checkpoint()` bulk-checkin: factor our `finalize_checkpoint()` bulk-checkin: introduce `index_blob_bulk_checkin_incore()` bulk-checkin: introduce `index_tree_bulk_checkin_incore()` builtin/merge-tree.c: implement support for `--write-pack`
Documentation/git-merge-tree.txt | 4 + builtin/merge-tree.c | 5 + bulk-checkin.c | 249 ++++++++++++++++++++++++++----- bulk-checkin.h | 8 + merge-ort.c | 43 ++++-- merge-recursive.h | 1 + t/t4301-merge-tree-write-tree.sh | 93 ++++++++++++ 7 files changed, 355 insertions(+), 48 deletions(-)
-- 2.42.0.8.g7a7e1e881e.dirty