summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Patrick Steinhardt <ps@pks.im>2016-02-22 12:23:33 +0100
committerLibravatar Junio C Hamano <gitster@pobox.com>2016-02-22 10:23:54 -0800
commit6c24dfb67e570407a87fb4ea4bf1c64ad89d5d88 (patch)
treef87e9d8cf3d8a490ef7574f44be88109f92d4975
parentinit-db: die on config errors when initializing empty repo (diff)
downloadtgif-6c24dfb67e570407a87fb4ea4bf1c64ad89d5d88.tar.xz
sequencer: die on config error when saving replay opts
When we start picking a range of revisions we save the replay options that are required to restore state when interrupting and later continuing picking the revisions. However, we do not check the return values of the `git_config_set` functions, which may lead us to store incomplete information. As this may lead us to fail when trying to continue the sequence the error can be fatal. Fix this by dying immediately when we are unable to write back any replay option. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--sequencer.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/sequencer.c b/sequencer.c
index 8c58fa2f4d..3c109b6863 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -933,31 +933,31 @@ static void save_opts(struct replay_opts *opts)
const char *opts_file = git_path_opts_file();
if (opts->no_commit)
- git_config_set_in_file(opts_file, "options.no-commit", "true");
+ git_config_set_in_file_or_die(opts_file, "options.no-commit", "true");
if (opts->edit)
- git_config_set_in_file(opts_file, "options.edit", "true");
+ git_config_set_in_file_or_die(opts_file, "options.edit", "true");
if (opts->signoff)
- git_config_set_in_file(opts_file, "options.signoff", "true");
+ git_config_set_in_file_or_die(opts_file, "options.signoff", "true");
if (opts->record_origin)
- git_config_set_in_file(opts_file, "options.record-origin", "true");
+ git_config_set_in_file_or_die(opts_file, "options.record-origin", "true");
if (opts->allow_ff)
- git_config_set_in_file(opts_file, "options.allow-ff", "true");
+ git_config_set_in_file_or_die(opts_file, "options.allow-ff", "true");
if (opts->mainline) {
struct strbuf buf = STRBUF_INIT;
strbuf_addf(&buf, "%d", opts->mainline);
- git_config_set_in_file(opts_file, "options.mainline", buf.buf);
+ git_config_set_in_file_or_die(opts_file, "options.mainline", buf.buf);
strbuf_release(&buf);
}
if (opts->strategy)
- git_config_set_in_file(opts_file, "options.strategy", opts->strategy);
+ git_config_set_in_file_or_die(opts_file, "options.strategy", opts->strategy);
if (opts->gpg_sign)
- git_config_set_in_file(opts_file, "options.gpg-sign", opts->gpg_sign);
+ git_config_set_in_file_or_die(opts_file, "options.gpg-sign", opts->gpg_sign);
if (opts->xopts) {
int i;
for (i = 0; i < opts->xopts_nr; i++)
- git_config_set_multivar_in_file(opts_file,
- "options.strategy-option",
- opts->xopts[i], "^$", 0);
+ git_config_set_multivar_in_file_or_die(opts_file,
+ "options.strategy-option",
+ opts->xopts[i], "^$", 0);
}
}