refs/reftable: allow configuring geometric factor
Allow configuring the geometric factor used by the auto-compaction algorithm whenever a new table is appended to the stack of tables. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
f663d34306
commit
f518d91a2b
@ -36,3 +36,13 @@ reftable.indexObjects::
|
||||
are a reverse mapping of object ID to the references pointing to them.
|
||||
+
|
||||
The default value is `true`.
|
||||
|
||||
reftable.geometricFactor::
|
||||
Whenever the reftable backend appends a new table to the stack, it
|
||||
performs auto compaction to ensure that there is only a handful of
|
||||
tables. The backend does this by ensuring that tables form a geometric
|
||||
sequence regarding the respective sizes of each table.
|
||||
+
|
||||
By default, the geometric sequence uses a factor of 2, meaning that for any
|
||||
table, the next-biggest table must at least be twice as big. A maximum factor
|
||||
of 256 is supported.
|
||||
|
@ -247,6 +247,11 @@ static int reftable_be_config(const char *var, const char *value,
|
||||
opts->restart_interval = restart_interval;
|
||||
} else if (!strcmp(var, "reftable.indexobjects")) {
|
||||
opts->skip_index_objects = !git_config_bool(var, value);
|
||||
} else if (!strcmp(var, "reftable.geometricfactor")) {
|
||||
unsigned long factor = git_config_ulong(var, value, ctx->kvi);
|
||||
if (factor > UINT8_MAX)
|
||||
die("reftable geometric factor cannot exceed %u", (unsigned)UINT8_MAX);
|
||||
opts->auto_compaction_factor = factor;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user