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>
maint
Nguyễn Thái Ngọc Duy10 years agocommitted byJunio C Hamano
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' '
@@ -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' '
@@ -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' '