scalar: move config setting logic into its own function

Create function 'set_scalar_config()' to contain the logic used in setting
Scalar-defined Git config settings, including how to handle reconfiguring &
overwriting existing values. This function allows future patches to set
config values in parts of 'scalar.c' other than 'set_recommended_config()'.

Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Victoria Dye 2022-08-18 21:40:50 +00:00 committed by Junio C Hamano
parent 9b24bb9205
commit d934a11c71
1 changed files with 28 additions and 16 deletions

View File

@ -85,13 +85,33 @@ static int run_git(const char *arg, ...)
return res; return res;
} }


struct scalar_config {
const char *key;
const char *value;
int overwrite_on_reconfigure;
};

static int set_scalar_config(const struct scalar_config *config, int reconfigure)
{
char *value = NULL;
int res;

if ((reconfigure && config->overwrite_on_reconfigure) ||
git_config_get_string(config->key, &value)) {
trace2_data_string("scalar", the_repository, config->key, "created");
res = git_config_set_gently(config->key, config->value);
} else {
trace2_data_string("scalar", the_repository, config->key, "exists");
res = 0;
}

free(value);
return res;
}

static int set_recommended_config(int reconfigure) static int set_recommended_config(int reconfigure)
{ {
struct { struct scalar_config config[] = {
const char *key;
const char *value;
int overwrite_on_reconfigure;
} config[] = {
/* Required */ /* Required */
{ "am.keepCR", "true", 1 }, { "am.keepCR", "true", 1 },
{ "core.FSCache", "true", 1 }, { "core.FSCache", "true", 1 },
@ -145,17 +165,9 @@ static int set_recommended_config(int reconfigure)
char *value; char *value;


for (i = 0; config[i].key; i++) { for (i = 0; config[i].key; i++) {
if ((reconfigure && config[i].overwrite_on_reconfigure) || if (set_scalar_config(config + i, reconfigure))
git_config_get_string(config[i].key, &value)) { return error(_("could not configure %s=%s"),
trace2_data_string("scalar", the_repository, config[i].key, "created"); config[i].key, config[i].value);
if (git_config_set_gently(config[i].key,
config[i].value) < 0)
return error(_("could not configure %s=%s"),
config[i].key, config[i].value);
} else {
trace2_data_string("scalar", the_repository, config[i].key, "exists");
free(value);
}
} }


/* /*