prune: strategies for linked checkouts
[git] / t / t2025-checkout-to.sh
1 #!/bin/sh
2
3 test_description='test git checkout --to'
4
5 . ./test-lib.sh
6
7 test_expect_success 'setup' '
8         test_commit init
9 '
10
11 test_expect_success 'checkout --to not updating paths' '
12         test_must_fail git checkout --to -- init.t
13 '
14
15 test_expect_success 'checkout --to an existing worktree' '
16         mkdir existing &&
17         test_must_fail git checkout --detach --to existing master
18 '
19
20 test_expect_success 'checkout --to a new worktree' '
21         git checkout --to here master &&
22         (
23                 cd here &&
24                 test_cmp ../init.t init.t &&
25                 git symbolic-ref HEAD >actual &&
26                 echo refs/heads/master >expect &&
27                 test_cmp expect actual &&
28                 git fsck
29         )
30 '
31
32 test_expect_success 'checkout --to a new worktree from a subdir' '
33         (
34                 mkdir sub &&
35                 cd sub &&
36                 git checkout --detach --to here master &&
37                 cd here &&
38                 test_cmp ../../init.t init.t
39         )
40 '
41
42 test_expect_success 'checkout --to from a linked checkout' '
43         (
44                 cd here &&
45                 git checkout --to nested-here master &&
46                 cd nested-here &&
47                 git fsck
48         )
49 '
50
51 test_expect_success 'checkout --to a new worktree creating new branch' '
52         git checkout --to there -b newmaster master &&
53         (
54                 cd there &&
55                 test_cmp ../init.t init.t &&
56                 git symbolic-ref HEAD >actual &&
57                 echo refs/heads/newmaster >expect &&
58                 test_cmp expect actual &&
59                 git fsck
60         )
61 '
62
63 test_done