Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
config: rename git_config_set to git_config_set_gently
The desired default behavior for `git_config_set` is to die
whenever an error occurs. Dying is the default for a lot of
internal functions when failures occur and is in this case the
right thing to do for most callers as otherwise we might run into
inconsistent repositories without noticing.

As some code may rely on the actual return values for
`git_config_set` we still require the ability to invoke these
functions without aborting. Rename the existing `git_config_set`
functions to `git_config_set_gently` to keep them available for
those callers.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Patrick Steinhardt authored and Junio C Hamano committed Feb 22, 2016
1 parent 2f29c1b commit 30598ad
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 39 deletions.
6 changes: 3 additions & 3 deletions branch.c
Expand Up @@ -70,18 +70,18 @@ int install_branch_config(int flag, const char *local, const char *origin, const
}

strbuf_addf(&key, "branch.%s.remote", local);
if (git_config_set(key.buf, origin ? origin : ".") < 0)
if (git_config_set_gently(key.buf, origin ? origin : ".") < 0)
goto out_err;

strbuf_reset(&key);
strbuf_addf(&key, "branch.%s.merge", local);
if (git_config_set(key.buf, remote) < 0)
if (git_config_set_gently(key.buf, remote) < 0)
goto out_err;

if (rebasing) {
strbuf_reset(&key);
strbuf_addf(&key, "branch.%s.rebase", local);
if (git_config_set(key.buf, "true") < 0)
if (git_config_set_gently(key.buf, "true") < 0)
goto out_err;
}
strbuf_release(&key);
Expand Down
2 changes: 1 addition & 1 deletion builtin/clone.c
Expand Up @@ -732,7 +732,7 @@ static int checkout(void)

static int write_one_config(const char *key, const char *value, void *data)
{
return git_config_set_multivar(key, value ? value : "true", "^$", 0);
return git_config_set_multivar_gently(key, value ? value : "true", "^$", 0);
}

static void write_config(struct string_list *config)
Expand Down
28 changes: 14 additions & 14 deletions builtin/config.c
Expand Up @@ -582,7 +582,7 @@ int cmd_config(int argc, const char **argv, const char *prefix)
check_write();
check_argc(argc, 2, 2);
value = normalize_value(argv[0], argv[1]);
ret = git_config_set_in_file(given_config_source.file, argv[0], value);
ret = git_config_set_in_file_gently(given_config_source.file, argv[0], value);
if (ret == CONFIG_NOTHING_SET)
error("cannot overwrite multiple values with a single value\n"
" Use a regexp, --add or --replace-all to change %s.", argv[0]);
Expand All @@ -592,23 +592,23 @@ int cmd_config(int argc, const char **argv, const char *prefix)
check_write();
check_argc(argc, 2, 3);
value = normalize_value(argv[0], argv[1]);
return git_config_set_multivar_in_file(given_config_source.file,
argv[0], value, argv[2], 0);
return git_config_set_multivar_in_file_gently(given_config_source.file,
argv[0], value, argv[2], 0);
}
else if (actions == ACTION_ADD) {
check_write();
check_argc(argc, 2, 2);
value = normalize_value(argv[0], argv[1]);
return git_config_set_multivar_in_file(given_config_source.file,
argv[0], value,
CONFIG_REGEX_NONE, 0);
return git_config_set_multivar_in_file_gently(given_config_source.file,
argv[0], value,
CONFIG_REGEX_NONE, 0);
}
else if (actions == ACTION_REPLACE_ALL) {
check_write();
check_argc(argc, 2, 3);
value = normalize_value(argv[0], argv[1]);
return git_config_set_multivar_in_file(given_config_source.file,
argv[0], value, argv[2], 1);
return git_config_set_multivar_in_file_gently(given_config_source.file,
argv[0], value, argv[2], 1);
}
else if (actions == ACTION_GET) {
check_argc(argc, 1, 2);
Expand All @@ -634,17 +634,17 @@ int cmd_config(int argc, const char **argv, const char *prefix)
check_write();
check_argc(argc, 1, 2);
if (argc == 2)
return git_config_set_multivar_in_file(given_config_source.file,
argv[0], NULL, argv[1], 0);
return git_config_set_multivar_in_file_gently(given_config_source.file,
argv[0], NULL, argv[1], 0);
else
return git_config_set_in_file(given_config_source.file,
argv[0], NULL);
return git_config_set_in_file_gently(given_config_source.file,
argv[0], NULL);
}
else if (actions == ACTION_UNSET_ALL) {
check_write();
check_argc(argc, 1, 2);
return git_config_set_multivar_in_file(given_config_source.file,
argv[0], NULL, argv[1], 1);
return git_config_set_multivar_in_file_gently(given_config_source.file,
argv[0], NULL, argv[1], 1);
}
else if (actions == ACTION_RENAME_SECTION) {
int ret;
Expand Down
2 changes: 1 addition & 1 deletion builtin/remote.c
Expand Up @@ -1393,7 +1393,7 @@ static int update(int argc, const char **argv)

static int remove_all_fetch_refspecs(const char *remote, const char *key)
{
return git_config_set_multivar(key, NULL, NULL, 1);
return git_config_set_multivar_gently(key, NULL, NULL, 1);
}

static void add_branches(struct remote *remote, const char **branches,
Expand Down
10 changes: 5 additions & 5 deletions cache.h
Expand Up @@ -1484,7 +1484,7 @@ extern int update_server_info(int);
/* git_config_parse_key() returns these negated: */
#define CONFIG_INVALID_KEY 1
#define CONFIG_NO_SECTION_OR_NAME 2
/* git_config_set(), git_config_set_multivar() return the above or these: */
/* git_config_set_gently(), git_config_set_multivar_gently() return the above or these: */
#define CONFIG_NO_LOCK -1
#define CONFIG_INVALID_FILE 3
#define CONFIG_NO_WRITE 4
Expand Down Expand Up @@ -1522,15 +1522,15 @@ extern int git_config_bool(const char *, const char *);
extern int git_config_maybe_bool(const char *, const char *);
extern int git_config_string(const char **, const char *, const char *);
extern int git_config_pathname(const char **, const char *, const char *);
extern int git_config_set_in_file(const char *, const char *, const char *);
extern int git_config_set_in_file_gently(const char *, const char *, const char *);
extern void git_config_set_in_file_or_die(const char *, const char *, const char *);
extern int git_config_set(const char *, const char *);
extern int git_config_set_gently(const char *, const char *);
extern void git_config_set_or_die(const char *, const char *);
extern int git_config_parse_key(const char *, char **, int *);
extern int git_config_key_is_valid(const char *key);
extern int git_config_set_multivar(const char *, const char *, const char *, int);
extern int git_config_set_multivar_gently(const char *, const char *, const char *, int);
extern void git_config_set_multivar_or_die(const char *, const char *, const char *, int);
extern int git_config_set_multivar_in_file(const char *, const char *, const char *, const char *, int);
extern int git_config_set_multivar_in_file_gently(const char *, const char *, const char *, const char *, int);
extern void git_config_set_multivar_in_file_or_die(const char *, const char *, const char *, const char *, int);
extern int git_config_rename_section(const char *, const char *);
extern int git_config_rename_section_in_file(const char *, const char *, const char *);
Expand Down
29 changes: 15 additions & 14 deletions config.c
Expand Up @@ -1825,10 +1825,10 @@ static ssize_t find_beginning_of_line(const char *contents, size_t size,
return offset;
}

int git_config_set_in_file(const char *config_filename,
const char *key, const char *value)
int git_config_set_in_file_gently(const char *config_filename,
const char *key, const char *value)
{
return git_config_set_multivar_in_file(config_filename, key, value, NULL, 0);
return git_config_set_multivar_in_file_gently(config_filename, key, value, NULL, 0);
}

void git_config_set_in_file_or_die(const char *config_filename,
Expand All @@ -1837,9 +1837,9 @@ void git_config_set_in_file_or_die(const char *config_filename,
git_config_set_multivar_in_file_or_die(config_filename, key, value, NULL, 0);
}

int git_config_set(const char *key, const char *value)
int git_config_set_gently(const char *key, const char *value)
{
return git_config_set_multivar(key, value, NULL, 0);
return git_config_set_multivar_gently(key, value, NULL, 0);
}

void git_config_set_or_die(const char *key, const char *value)
Expand Down Expand Up @@ -1961,9 +1961,10 @@ int git_config_key_is_valid(const char *key)
* - the config file is removed and the lock file rename()d to it.
*
*/
int git_config_set_multivar_in_file(const char *config_filename,
const char *key, const char *value,
const char *value_regex, int multi_replace)
int git_config_set_multivar_in_file_gently(const char *config_filename,
const char *key, const char *value,
const char *value_regex,
int multi_replace)
{
int fd = -1, in_fd = -1;
int ret;
Expand Down Expand Up @@ -2194,16 +2195,16 @@ void git_config_set_multivar_in_file_or_die(const char *config_filename,
const char *key, const char *value,
const char *value_regex, int multi_replace)
{
if (git_config_set_multivar_in_file(config_filename, key, value,
value_regex, multi_replace) < 0)
if (git_config_set_multivar_in_file_gently(config_filename, key, value,
value_regex, multi_replace) < 0)
die(_("Could not set '%s' to '%s'"), key, value);
}

int git_config_set_multivar(const char *key, const char *value,
const char *value_regex, int multi_replace)
int git_config_set_multivar_gently(const char *key, const char *value,
const char *value_regex, int multi_replace)
{
return git_config_set_multivar_in_file(NULL, key, value, value_regex,
multi_replace);
return git_config_set_multivar_in_file_gently(NULL, key, value, value_regex,
multi_replace);
}

void git_config_set_multivar_or_die(const char *key, const char *value,
Expand Down
2 changes: 1 addition & 1 deletion submodule.c
Expand Up @@ -68,7 +68,7 @@ int update_path_in_gitmodules(const char *oldpath, const char *newpath)
strbuf_addstr(&entry, "submodule.");
strbuf_addstr(&entry, submodule->name);
strbuf_addstr(&entry, ".path");
if (git_config_set_in_file(".gitmodules", entry.buf, newpath) < 0) {
if (git_config_set_in_file_gently(".gitmodules", entry.buf, newpath) < 0) {
/* Maybe the user already did that, don't error out here */
warning(_("Could not update .gitmodules entry %s"), entry.buf);
strbuf_release(&entry);
Expand Down

0 comments on commit 30598ad

Please sign in to comment.