[PATCH 00/11] reftable: expose write options as config
- From
Patrick Steinhardt <ps@pks.im>
- Date
- May 2, 2024, 06:51 UTC
- Message-ID
- <cover.1714630191.git.ps@pks.im>
Hi,
the reftable format has some flexibility with regards to how exactly it writes the respective tables:
- The block size allows you to control how large each block is
supposed to be. The bigger the block, the more records you can fit
into it. - Restart intervals control how often a restart point is written that
breaks prefix compression. The lower the interval, the less disk
space savings you get. - Object indices can be enabled or disabled. These are optional and
Git doesn't use them right now, so disabling them may be a sensible
thing to do if you want to save some disk space. - The geometric factor controls when we compact tables during auto
compaction.This patch series exposes all of these via a new set of configs so that they can be tweaked by the user as-needed. It's not expected that those are really of much importance for the "normal" user -- the defaults should be good enough. But for edge cases (huge repos with millions of refs) and for hosting providers these knobs can be helpful.
This patch series applies on top of d4cc1ec35f (Start the 2.46 cycle, 2024-04-30).
Patrick
Patrick Steinhardt (11): reftable: consistently refer to `reftable_write_options` as `opts` reftable: consistently pass write opts as value reftable/writer: drop static variable used to initialize strbuf reftable/writer: improve error when passed an invalid block size reftable/dump: support dumping a table's block structure refs/reftable: allow configuring block size reftable: use `uint16_t` to track restart interval refs/reftable: allow configuring restart interval refs/reftable: allow disabling writing the object index reftable: make the compaction factor configurable refs/reftable: allow configuring geometric factor
Documentation/config.txt | 2 + Documentation/config/reftable.txt | 49 +++++ refs/reftable-backend.c | 46 ++++- reftable/block.h | 2 +- reftable/dump.c | 12 +- reftable/merged_test.c | 6 +- reftable/reader.c | 63 +++++++ reftable/readwrite_test.c | 26 +-- reftable/refname_test.c | 2 +- reftable/reftable-reader.h | 2 + reftable/reftable-stack.h | 2 +- reftable/reftable-writer.h | 10 +- reftable/stack.c | 56 +++--- reftable/stack.h | 5 +- reftable/stack_test.c | 118 ++++++------ reftable/writer.c | 20 +-- t/t0613-reftable-write-options.sh | 286 ++++++++++++++++++++++++++++++ 17 files changed, 577 insertions(+), 130 deletions(-) create mode 100644 Documentation/config/reftable.txt create mode 100755 t/t0613-reftable-write-options.sh
base-commit: d4cc1ec35f3bcce816b69986ca41943f6ce21377
-- 2.45.0