(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