Code

Merge branch 'mz/maint-rebase-stat-config'
[git.git] / t / t3509-cherry-pick-merge-df.sh
1 #!/bin/sh
3 test_description='Test cherry-pick with directory/file conflicts'
4 . ./test-lib.sh
6 test_expect_success SYMLINKS 'Setup rename across paths each below D/F conflicts' '
7         mkdir a &&
8         >a/f &&
9         git add a &&
10         git commit -m a &&
12         mkdir b &&
13         ln -s ../a b/a &&
14         git add b &&
15         git commit -m b &&
17         git checkout -b branch &&
18         rm b/a &&
19         mv a b/a &&
20         ln -s b/a a &&
21         git add . &&
22         git commit -m swap &&
24         >f1 &&
25         git add f1 &&
26         git commit -m f1
27 '
29 test_expect_success SYMLINKS 'Cherry-pick succeeds with rename across D/F conflicts' '
30         git reset --hard &&
31         git checkout master^0 &&
32         git cherry-pick branch
33 '
35 test_expect_success 'Setup rename with file on one side matching directory name on other' '
36         git checkout --orphan nick-testcase &&
37         git rm -rf . &&
39         >empty &&
40         git add empty &&
41         git commit -m "Empty file" &&
43         git checkout -b simple &&
44         mv empty file &&
45         mkdir empty &&
46         mv file empty &&
47         git add empty/file &&
48         git commit -m "Empty file under empty dir" &&
50         echo content >newfile &&
51         git add newfile &&
52         git commit -m "New file"
53 '
55 test_expect_success 'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (resolve)' '
56         git reset --hard &&
57         git checkout -q nick-testcase^0 &&
58         git cherry-pick --strategy=resolve simple
59 '
61 test_expect_success 'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (recursive)' '
62         git reset --hard &&
63         git checkout -q nick-testcase^0 &&
64         git cherry-pick --strategy=recursive simple
65 '
67 test_expect_success 'Setup rename with file on one side matching different dirname on other' '
68         git reset --hard &&
69         git checkout --orphan mergeme &&
70         git rm -rf . &&
72         mkdir sub &&
73         mkdir othersub &&
74         echo content > sub/file &&
75         echo foo > othersub/whatever &&
76         git add -A &&
77         git commit -m "Common commmit" &&
79         git rm -rf othersub &&
80         git mv sub/file othersub &&
81         git commit -m "Commit to merge" &&
83         git checkout -b newhead mergeme~1 &&
84         >independent-change &&
85         git add independent-change &&
86         git commit -m "Completely unrelated change"
87 '
89 test_expect_success 'Cherry-pick with rename to different D/F conflict succeeds (resolve)' '
90         git reset --hard &&
91         git checkout -q newhead^0 &&
92         git cherry-pick --strategy=resolve mergeme
93 '
95 test_expect_success 'Cherry-pick with rename to different D/F conflict succeeds (recursive)' '
96         git reset --hard &&
97         git checkout -q newhead^0 &&
98         git cherry-pick --strategy=recursive mergeme
99 '
101 test_done