checkout: reject if the branch is already checked out elsewhere
One branch obviously can't be checked out at two places (but detached heads are ok). Give the user a choice in this case: --detach, -b new-branch, switch branch in the other checkout first or simply 'cd' and continue to work there. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
23af91d102
commit
5883034c61
@ -18,13 +18,14 @@ test_expect_success 'checkout --to an existing worktree' '
|
||||
'
|
||||
|
||||
test_expect_success 'checkout --to a new worktree' '
|
||||
git checkout --to here master &&
|
||||
git rev-parse HEAD >expect &&
|
||||
git checkout --detach --to here master &&
|
||||
(
|
||||
cd here &&
|
||||
test_cmp ../init.t init.t &&
|
||||
git symbolic-ref HEAD >actual &&
|
||||
echo refs/heads/master >expect &&
|
||||
test_cmp expect actual &&
|
||||
test_must_fail git symbolic-ref HEAD &&
|
||||
git rev-parse HEAD >actual &&
|
||||
test_cmp ../expect actual &&
|
||||
git fsck
|
||||
)
|
||||
'
|
||||
@ -42,7 +43,7 @@ test_expect_success 'checkout --to a new worktree from a subdir' '
|
||||
test_expect_success 'checkout --to from a linked checkout' '
|
||||
(
|
||||
cd here &&
|
||||
git checkout --to nested-here master &&
|
||||
git checkout --detach --to nested-here master &&
|
||||
cd nested-here &&
|
||||
git fsck
|
||||
)
|
||||
@ -60,4 +61,18 @@ test_expect_success 'checkout --to a new worktree creating new branch' '
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'die the same branch is already checked out' '
|
||||
(
|
||||
cd here &&
|
||||
test_must_fail git checkout newmaster
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'not die on re-checking out current branch' '
|
||||
(
|
||||
cd there &&
|
||||
git checkout newmaster
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Reference in New Issue
Block a user