From 3a5404333c6c8b5897e78c9dcb711d623035791b Mon Sep 17 00:00:00 2001 From: Eric Sunshine Date: Tue, 28 Aug 2018 17:20:26 -0400 Subject: worktree: delete .git/worktrees if empty after 'remove' For cleanliness, "git worktree prune" deletes the .git/worktrees directory if it is empty after pruning is complete. For consistency, make "git worktree remove " likewise delete .git/worktrees if it is empty after the removal. Signed-off-by: Eric Sunshine Signed-off-by: Junio C Hamano --- builtin/worktree.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'builtin/worktree.c') diff --git a/builtin/worktree.c b/builtin/worktree.c index a95fe67da6..c4abbde2b8 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -62,6 +62,11 @@ static int delete_git_dir(const char *id) return ret; } +static void delete_worktrees_dir_if_empty(void) +{ + rmdir(git_path("worktrees")); /* ignore failed removal */ +} + static int prune_worktree(const char *id, struct strbuf *reason) { struct stat st; @@ -149,7 +154,7 @@ static void prune_worktrees(void) } closedir(dir); if (!show_only) - rmdir(git_path("worktrees")); + delete_worktrees_dir_if_empty(); strbuf_release(&reason); } @@ -918,6 +923,7 @@ static int remove_worktree(int ac, const char **av, const char *prefix) * from here. */ ret |= delete_git_dir(wt->id); + delete_worktrees_dir_if_empty(); free_worktrees(worktrees); return ret; -- cgit v1.2.3