From b22085777e6bba0aa2f3eeacc4a5559b7b362154 Mon Sep 17 00:00:00 2001 From: Julian Prein Date: Thu, 27 Oct 2022 23:52:17 +0200 Subject: [PATCH] git:checkout-worktree: Remove tmp dir on error When the git-worktree call exits with an error we can delete the temporary directory as nothing is in it. --- .config/zsh/autoload/git/git-checkout-worktree | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.config/zsh/autoload/git/git-checkout-worktree b/.config/zsh/autoload/git/git-checkout-worktree index 5f9a81e..18eaf79 100755 --- a/.config/zsh/autoload/git/git-checkout-worktree +++ b/.config/zsh/autoload/git/git-checkout-worktree @@ -30,13 +30,19 @@ local REPO_NAME WORKTREE_PATH REPO_NAME="${$(git rev-parse --show-toplevel):t}" WORKTREE_PATH="$(mktemp -d -p "" "worktree.XXX.$REPO_NAME.${1//\//_}")" +git worktree add "$WORKTREE_PATH" "$@" || ret=$? + +if (( ret )); then + rmdir "$WORKTREE_PATH" + return $ret +fi + trap ' errc=$? <&2 printf "Exiting abnormally. Check and possibly remove '$WORKTREE_PATH' manually.\n" return $errc ' INT QUIT TERM EXIT -git worktree add "$WORKTREE_PATH" "$@" pushd -q "$WORKTREE_PATH" "$SHELL" && errc=$? || errc=$?