git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 2/4] rebase: warn if state directory cannot be removed

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
May 14, 2019, 18:03 UTC
Message-ID
<20190514180349.17245-3-phillip.wood123@gmail.com>
In-Reply-To
<20190514180349.17245-1-phillip.wood123@gmail.com>
From: Phillip Wood <phillip.wood@dunelm.org.uk>

If rebase --quit cannot remove the state directory then it dies. However when rebase finishes normally or the user runs rebase --abort any errors that occur when removing the state directory are ignored. That is fixed by this commit.

All of the callers of finish_rebase() except the code that handles --abort are careful to make sure they get a postive return value, do the same for --abort.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
 builtin/rebase.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 90037c9c45..199cb5b81d 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -752,6 +752,7 @@ static int finish_rebase(struct rebase_options *opts)
 {
 	struct strbuf dir = STRBUF_INIT;
 	const char *argv_gc_auto[] = { "gc", "--auto", NULL };
+	int ret = 0;
 
 	delete_ref(NULL, "REBASE_HEAD", NULL, REF_NO_DEREF);
 	apply_autostash(opts);
@@ -762,10 +763,11 @@ static int finish_rebase(struct rebase_options *opts)
 	 */
 	run_command_v_opt(argv_gc_auto, RUN_GIT_CMD);
 	strbuf_addstr(&dir, opts->state_dir);
-	remove_dir_recursively(&dir, 0);
+	if (remove_dir_recursively(&dir, 0))
+		ret = error(_("could not remove '%s'"), opts->state_dir);
 	strbuf_release(&dir);
 
-	return 0;
+	return ret;
 }
 
 static struct commit *peel_committish(const char *name)
@@ -1648,7 +1650,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
 			die(_("could not move back to %s"),
 			    oid_to_hex(&options.orig_head));
 		remove_branch_state(the_repository);
-		ret = finish_rebase(&options);
+		ret = !!finish_rebase(&options);
 		goto cleanup;
 	}
 	case ACTION_QUIT: {
-- 
2.21.0
Previous: Phillip WoodNext: Phillip Wood
Message 13 of 15 in “rebase --abort: cleanup refs/rewritten”
  1. rebase --abort: cleanup refs/rewrittenPhillip Wood, Apr 26, 2019
  2. Johannes SchindelinApr 29, 2019
  3. Phillip WoodApr 30, 2019
  4. Johannes SchindelinApr 30, 2019
  5. Phillip WoodMay 1, 2019
  6. Johannes SchindelinMay 3, 2019
  7. Phillip WoodMay 3, 2019
  8. SZEDER GáborMay 7, 2019
  9. Junio C HamanoMay 7, 2019
  10. Phillip WoodMay 7, 2019
  11. 0/4 rebase --abort/--quit: cleanup refs/rewrittenPhillip Wood, May 14, 2019
  12. 1/4 rebase: fix a memory leakPhillip Wood, May 14, 2019
  13. 2/4 rebase: warn if state directory cannot be removedPhillip Wood, May 14, 2019
  14. 4/4 rebase --abort/--quit: cleanup refs/rewrittenPhillip Wood, May 14, 2019
  15. 3/4 sequencer: return errors from sequencer_remove_state()Phillip Wood, May 14, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.