Subject: Re: git branch doesn't allow me to forcibly delete branch which was checked out in a now-deleted worktree dir

From: Erik Johnson <[email-masked]>
Date: Thu, 7 Jul 2016 19:36:46 -0500

On Thu, Jul 07, 2016 at 04:39:26PM -0700, Jacob Keller wrote:
>On Thu, Jul 7, 2016 at 11:44 AM, Erik Johnson <[email-masked]> wrote:
>> % git branch -D archive-extracted-xz
>> error: Cannot delete branch 'archive-extracted-xz' checked out at
>> '/home/erik/git/salt/archive-extracted-xz'
>> % test -d /home/erik/git/salt/archive-extracted-xz || echo "directory
>> doesn't exist"
>> directory doesn't exist
>> % git --version
>> git version 2.9.0
>>
>> I know that I can just get rid of this error by pruning the worktrees,
>> but this still seems like incorrect behavior on the part of git branch.
>> It shouldn't be telling me that the branch is checked out in a directory
>> that does not exist, that is just factually incorrect.
>>
>
>Until the worktree status is updated git branch probably isn't
>checking itself. It might be worth triggering a worktree prune when
>doing branch work. Note that some worktrees may be on removable media
>or similar, and thus even if the directory doesn't exist right now,
>that does not mean it's no longer checked out. There is already
>support for setting a worktree as "persistent", but this means git
>branch definitely shouldn't just do its own check for non existent
>directory.
>
>Thanks,
>Jake
>

I'm not expecting _any_ git branch command to prune worktrees, but a
branch _deletion_ shouldn't fail because git thinks the branch is
checked out in a worktree that doesn't exist anymore. Even in the
scenario where the worktree corresponding to that branch is on removable
media, does it really matter? You're trying to delete the branch.

I feel like this is a recent change in behavior, too. I've been using
worktrees since they were first available in 2.5, and I don't remember
having to prune to be able to delete the branch until recently.

--

-Erik

"For me, it is far better to grasp the universe as it really is than to
persist in delusion, however satisfying and reassuring."  --Carl Sagan