sequencer: return errors from sequencer_remove_state()

If there is an error when removing the state directory then we should
report it. This matches what the non-interactive rebase does.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Phillip Wood 2019-05-14 19:03:48 +01:00 committed by Junio C Hamano
parent d3fce47d2d
commit 37e9ee5cb9

View File

@ -274,7 +274,7 @@ static const char *gpg_sign_opt_quoted(struct replay_opts *opts)
int sequencer_remove_state(struct replay_opts *opts) int sequencer_remove_state(struct replay_opts *opts)
{ {
struct strbuf buf = STRBUF_INIT; struct strbuf buf = STRBUF_INIT;
int i; int i, ret = 0;
if (is_rebase_i(opts) && if (is_rebase_i(opts) &&
strbuf_read_file(&buf, rebase_path_refs_to_delete(), 0) > 0) { strbuf_read_file(&buf, rebase_path_refs_to_delete(), 0) > 0) {
@ -283,8 +283,10 @@ int sequencer_remove_state(struct replay_opts *opts)
char *eol = strchr(p, '\n'); char *eol = strchr(p, '\n');
if (eol) if (eol)
*eol = '\0'; *eol = '\0';
if (delete_ref("(rebase -i) cleanup", p, NULL, 0) < 0) if (delete_ref("(rebase -i) cleanup", p, NULL, 0) < 0) {
warning(_("could not delete '%s'"), p); warning(_("could not delete '%s'"), p);
ret = -1;
}
if (!eol) if (!eol)
break; break;
p = eol + 1; p = eol + 1;
@ -300,10 +302,11 @@ int sequencer_remove_state(struct replay_opts *opts)
strbuf_reset(&buf); strbuf_reset(&buf);
strbuf_addstr(&buf, get_dir(opts)); strbuf_addstr(&buf, get_dir(opts));
remove_dir_recursively(&buf, 0); if (remove_dir_recursively(&buf, 0))
ret = error(_("could not remove '%s'"), buf.buf);
strbuf_release(&buf); strbuf_release(&buf);
return 0; return ret;
} }
static const char *action_name(const struct replay_opts *opts) static const char *action_name(const struct replay_opts *opts)