worktree: teach "add" to check out existing branches
authorThomas Gummerer <t.gummerer@gmail.com>
Tue, 24 Apr 2018 21:56:35 +0000 (22:56 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 30 Apr 2018 00:06:34 +0000 (09:06 +0900)
commitf60a7b763fe070161b332d3878f81a7f09ab6e44
tree0359d260102a9bfd21292a4bf3a7fe6eb83d0377
parent6427f87186e53d9d4319d43e4efbe46bb93b7440
worktree: teach "add" to check out existing branches

Currently 'git worktree add <path>' creates a new branch named after the
basename of the path by default.  If a branch with that name already
exists, the command refuses to do anything, unless the '--force' option
is given.

However we can do a little better than that, and check the branch out if
it is not checked out anywhere else.  This will help users who just want
to check an existing branch out into a new worktree, and save a few
keystrokes.

As the current behaviour is to simply 'die()' when a branch with the name
of the basename of the path already exists, there are no backwards
compatibility worries here.

We will still 'die()' if the branch is checked out in another worktree,
unless the --force flag is passed.

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-worktree.txt
builtin/worktree.c
t/t2025-worktree-add.sh