Re: git branch doesn't allow me to forcibly delete branch which was checked out in a now-deleted worktree dir
On Thu, Jul 07, 2016 at 04:39:26PM -0700, Jacob Keller wrote:
Show 28 quoted lines
>On Thu, Jul 7, 2016 at 11:44 AM, Erik Johnson <palehose@gmail.com> 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