repository.h: don't use a mix of int and bitfields
commitc21919f1b25cf7008018e8724e92dc771057c268
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Tue, 21 Sep 2021 13:13:03 +0000 (21 15:13 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 22 Sep 2021 20:15:00 +0000 (22 13:15 -0700)
tree3781178cf00219cacb879092efd28983cdc5361d
parent3050b6dfc75d04ad49213cab4c8730c981a8eea7
repository.h: don't use a mix of int and bitfields

Change the bitfield added in 58300f47432 (sparse-index: add
index.sparse config option, 2021-03-30) and 3964fc2aae7 (sparse-index:
add guard to ensure full index, 2021-03-30) to just use an "int"
boolean instead.

It might be smart to optimize the space here in the future, but by
consistently using an "int" we can take its address and pass it to
repo_cfg_bool(), and therefore don't need to handle "sparse_index" as
a special-case when reading the "index.sparse" setting.

There's no corresponding config for "command_requires_full_index", but
let's change it too for consistency and to prevent future bugs
creeping in due to one of these being "unsigned".

Using "int" consistently also prevents subtle bugs or undesired
control flow creeping in here. Before the preceding commit the
initialization of "command_requires_full_index" in
prepare_repo_settings() did nothing, i.e. this:

    r->settings.command_requires_full_index = 1

Was redundant to the earlier memset() to -1. Likewise for
"sparse_index" added in 58300f47432 (sparse-index: add index.sparse
config option, 2021-03-30) the code and comment added there was
misleading, we weren't initializing it to off, but re-initializing it
from "1" to "0", and then finally checking the config, and perhaps
setting it to "1" again. I.e. we could have applied this patch before
the preceding commit:

+ assert(r->settings.command_requires_full_index == 1);
  r->settings.command_requires_full_index = 1;

  /*
   * Initialize this as off.
   */
+ assert(r->settings.sparse_index == 1);
  r->settings.sparse_index = 0;
  if (!repo_config_get_bool(r, "index.sparse", &value) && value)
  r->settings.sparse_index = 1;

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
repo-settings.c
repository.h