7
8
test_expect_success 'setup' '
9
test_commit init &&
10
- git branch -f fake-1 &&
11
- git branch -f fake-2 &&
10
11
for i in 1 2 3 4
12
do
13
+ git checkout -b conflict-$i &&
14
+ echo "not I" >$i.t &&
15
+ git add $i.t &&
16
+ git commit -m "will conflict" &&
17
+
18
+ git checkout - &&
19
test_commit $i &&
20
git branch wt-$i &&
21
+ git branch fake-$i &&
22
git worktree add wt-$i wt-$i || return 1
23
done &&
24
49
done
50
'
51
47
-test_expect_success 'refuse to overwrite: worktree in bisect' '
48
- test_when_finished rm -rf .git/worktrees/wt-*/BISECT_* &&
52
+test_expect_success !SANITIZE_LEAK 'refuse to overwrite: worktree in bisect' '
53
+ test_when_finished git -C wt-4 bisect reset &&
54
50
- touch .git/worktrees/wt-4/BISECT_LOG &&
51
- echo refs/heads/fake-2 >.git/worktrees/wt-4/BISECT_START &&
55
+ # Set up a bisect so HEAD no longer points to wt-4.
56
+ git -C wt-4 bisect start &&
57
+ git -C wt-4 bisect bad wt-4 &&
58
+ git -C wt-4 bisect good wt-1 &&
59
53
- test_must_fail git branch -f fake-2 HEAD 2>err &&
54
- grep "cannot force update the branch '\''fake-2'\'' checked out at.*wt-4" err
60
+ test_must_fail git branch -f wt-4 HEAD 2>err &&
61
+ grep "cannot force update the branch '\''wt-4'\'' checked out at.*wt-4" err
62
'
63
57
-test_expect_success 'refuse to overwrite: worktree in rebase' '
58
- test_when_finished rm -rf .git/worktrees/wt-*/rebase-merge &&
64
+test_expect_success !SANITIZE_LEAK 'refuse to overwrite: worktree in rebase' '
65
+ test_when_finished git -C wt-2 rebase --abort &&
66
60
- mkdir -p .git/worktrees/wt-3/rebase-merge &&
61
- touch .git/worktrees/wt-3/rebase-merge/interactive &&
62
- echo refs/heads/fake-1 >.git/worktrees/wt-3/rebase-merge/head-name &&
63
- echo refs/heads/fake-2 >.git/worktrees/wt-3/rebase-merge/onto &&
67
+ # This will fail part-way through due to a conflict.
68
+ test_must_fail git -C wt-2 rebase conflict-2 &&
69
65
- test_must_fail git branch -f fake-1 HEAD 2>err &&
66
- grep "cannot force update the branch '\''fake-1'\'' checked out at.*wt-3" err
70
+ test_must_fail git branch -f wt-2 HEAD 2>err &&
71
+ grep "cannot force update the branch '\''wt-2'\'' checked out at.*wt-2" err
72
'
73
74
test_expect_success !SANITIZE_LEAK 'refuse to fetch over ref: checked out' '
82
'
83
84
test_expect_success !SANITIZE_LEAK 'refuse to fetch over ref: worktree in bisect' '
80
- test_when_finished rm -rf .git/worktrees/wt-*/BISECT_* &&
85
+ test_when_finished git -C wt-4 bisect reset &&
86
82
- touch .git/worktrees/wt-4/BISECT_LOG &&
83
- echo refs/heads/fake-2 >.git/worktrees/wt-4/BISECT_START &&
87
+ # Set up a bisect so HEAD no longer points to wt-4.
88
+ git -C wt-4 bisect start &&
89
+ git -C wt-4 bisect bad wt-4 &&
90
+ git -C wt-4 bisect good wt-1 &&
91
85
- test_must_fail git fetch server +refs/heads/fake-2:refs/heads/fake-2 2>err &&
92
+ test_must_fail git fetch server +refs/heads/wt-4:refs/heads/wt-4 2>err &&
93
grep "refusing to fetch into branch" err
94
'
95
96
test_expect_success !SANITIZE_LEAK 'refuse to fetch over ref: worktree in rebase' '
90
- test_when_finished rm -rf .git/worktrees/wt-*/rebase-merge &&
97
+ test_when_finished git -C wt-3 rebase --abort &&
98
92
- mkdir -p .git/worktrees/wt-4/rebase-merge &&
93
- touch .git/worktrees/wt-4/rebase-merge/interactive &&
94
- echo refs/heads/fake-1 >.git/worktrees/wt-4/rebase-merge/head-name &&
95
- echo refs/heads/fake-2 >.git/worktrees/wt-4/rebase-merge/onto &&
99
+ # This will fail part-way through due to a conflict.
100
+ test_must_fail git -C wt-3 rebase conflict-3 &&
101
97
- test_must_fail git fetch server +refs/heads/fake-1:refs/heads/fake-1 2>err &&
102
+ test_must_fail git fetch server +refs/heads/wt-3:refs/heads/wt-3 2>err &&
103
grep "refusing to fetch into branch" err
104
'
105