On Thu, Nov 09, 2023 at 02:40:28AM +0900, Junio C Hamano wrote: > * tb/merge-tree-write-pack (2023-10-23) 5 commits > - builtin/merge-tree.c: implement support for `--write-pack` > - bulk-checkin: introduce `index_tree_bulk_checkin_incore()` > - bulk-checkin: introduce `index_blob_bulk_checkin_incore()` > - bulk-checkin: generify `stream_blob_to_pack()` for arbitrary types > - bulk-checkin: extract abstract `bulk_checkin_source` > > "git merge-tree" learned "--write-pack" to record its result > without creating loose objects. > > Comments? > source: <cover.1698101088.git.me@xxxxxxxxxxxx> This series received a couple of LGTMs from you and Patrick: - https://lore.kernel.org/git/xmqqo7go7w63.fsf@gitster.g/#t - https://lore.kernel.org/git/ZTjKmcV5c_EFuoGo@tanuki/ Johannes had posted some comments[1] about instead using a temporary object store where objects are written as loose that would extend to git replay. Like Peff mentions[2] below in that thread, that approach would still involve writing loose objects, and it is the goal of my series to avoid doing so. I demonstrated in a follow-up thread[3] that my approach of using the bulk-checkin and tmp-objdir APIs does extend straightforwardly to 'git replay'. This works by writing out one pack per replay step in a temporary object directory, and then running 'git repack -adf' on that temporary object directory before migrating a single pack containing all new objects back into the main object store. I am fairly confident that tb/merge-tree-write-pack is ready to go. I'll spin off a separate thread based on that branch and cc/git-replay as a non-RFC series that extends this approach to 'git replay', so we'll be ready to go there once Christian's series progresses. [1]: https://lore.kernel.org/git/0ac32374-7d52-8f0c-8583-110de678291e@xxxxxx/ [2]: https://lore.kernel.org/git/20231107034224.GA874199@xxxxxxxxxxxxxxxxxxxxxxx/ [3]: https://lore.kernel.org/git/cover.1699381371.git.me@xxxxxxxxxxxx/ Thanks, Taylor