332
333
static int reftable_be_config(const char *var, const char *value,
334
const struct config_context *ctx,
335
- void *_opts)
335
+ void *payload)
336
{
337
- struct reftable_write_options *opts = _opts;
337
+ struct reftable_ref_store *refs = payload;
338
339
if (!strcmp(var, "reftable.blocksize")) {
340
unsigned long block_size = git_config_ulong(var, value, ctx->kvi);
341
if (block_size > 16777215)
342
die("reftable block size cannot exceed 16MB");
343
- opts->block_size = block_size;
343
+ refs->write_options.block_size = block_size;
344
} else if (!strcmp(var, "reftable.restartinterval")) {
345
unsigned long restart_interval = git_config_ulong(var, value, ctx->kvi);
346
if (restart_interval > UINT16_MAX)
347
die("reftable block size cannot exceed %u", (unsigned)UINT16_MAX);
348
- opts->restart_interval = restart_interval;
348
+ refs->write_options.restart_interval = restart_interval;
349
} else if (!strcmp(var, "reftable.indexobjects")) {
350
- opts->skip_index_objects = !git_config_bool(var, value);
350
+ refs->write_options.skip_index_objects = !git_config_bool(var, value);
351
} else if (!strcmp(var, "reftable.geometricfactor")) {
352
unsigned long factor = git_config_ulong(var, value, ctx->kvi);
353
if (factor > UINT8_MAX)
354
die("reftable geometric factor cannot exceed %u", (unsigned)UINT8_MAX);
355
- opts->auto_compaction_factor = factor;
355
+ refs->write_options.auto_compaction_factor = factor;
356
} else if (!strcmp(var, "reftable.locktimeout")) {
357
int64_t lock_timeout = git_config_int64(var, value, ctx->kvi);
358
if (lock_timeout > LONG_MAX)
359
die("reftable lock timeout cannot exceed %"PRIdMAX, (intmax_t)LONG_MAX);
360
if (lock_timeout < 0 && lock_timeout != -1)
361
die("reftable lock timeout does not support negative values other than -1");
362
- opts->lock_timeout_ms = lock_timeout;
362
+ refs->write_options.lock_timeout_ms = lock_timeout;
363
+ } else if (!strcmp(var, "core.logallrefupdates")) {
364
+ refs->log_all_ref_updates = refs_parse_log_all_ref_updates_config(value);
365
}
366
367
return 0;
400
401
base_ref_store_init(&refs->base, repo, refdir.buf, &refs_be_reftable);
402
strmap_init(&refs->worktree_backends);
401
- refs->log_all_ref_updates = opts->log_all_ref_updates;
403
refs->store_flags = opts->access_flags;
404
405
switch (repo->hash_algo->format_id) {
416
refs->write_options.disable_auto_compact =
417
!git_env_bool("GIT_TEST_REFTABLE_AUTOCOMPACTION", 1);
418
refs->write_options.lock_timeout_ms = 100;
419
+ refs->log_all_ref_updates = LOG_REFS_UNSET;
420
419
- repo_config(repo, reftable_be_config, &refs->write_options);
421
+ repo_config(repo, reftable_be_config, refs);
422
423
/*
424
* It is somewhat unfortunate that we have to mirror the default block