Commit | Line | Data |
---|---|---|
f433f705 AG |
1 | #!/bin/sh |
2 | ||
3 | test_description='Test cherry-pick with directory/file conflicts' | |
4 | . ./test-lib.sh | |
5 | ||
899663f8 | 6 | test_expect_success 'Initialize repository' ' |
f433f705 AG |
7 | mkdir a && |
8 | >a/f && | |
9 | git add a && | |
899663f8 PT |
10 | git commit -m a |
11 | ' | |
f433f705 | 12 | |
622f98e2 | 13 | test_expect_success 'Setup rename across paths each below D/F conflicts' ' |
f433f705 | 14 | mkdir b && |
622f98e2 | 15 | test_ln_s_add ../a b/a && |
f433f705 AG |
16 | git commit -m b && |
17 | ||
18 | git checkout -b branch && | |
19 | rm b/a && | |
622f98e2 JS |
20 | git mv a b/a && |
21 | test_ln_s_add b/a a && | |
f433f705 AG |
22 | git commit -m swap && |
23 | ||
24 | >f1 && | |
25 | git add f1 && | |
26 | git commit -m f1 | |
27 | ' | |
28 | ||
622f98e2 | 29 | test_expect_success 'Cherry-pick succeeds with rename across D/F conflicts' ' |
f433f705 AG |
30 | git reset --hard && |
31 | git checkout master^0 && | |
32 | git cherry-pick branch | |
33 | ' | |
34 | ||
56bfd762 EN |
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 . && | |
38 | ||
39 | >empty && | |
40 | git add empty && | |
41 | git commit -m "Empty file" && | |
42 | ||
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" && | |
49 | ||
50 | echo content >newfile && | |
51 | git add newfile && | |
52 | git commit -m "New file" | |
53 | ' | |
54 | ||
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 | ' | |
60 | ||
86273e57 | 61 | test_expect_success 'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (recursive)' ' |
56bfd762 EN |
62 | git reset --hard && |
63 | git checkout -q nick-testcase^0 && | |
64 | git cherry-pick --strategy=recursive simple | |
65 | ' | |
66 | ||
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 . && | |
71 | ||
72 | mkdir sub && | |
73 | mkdir othersub && | |
74 | echo content > sub/file && | |
75 | echo foo > othersub/whatever && | |
76 | git add -A && | |
a316b954 | 77 | git commit -m "Common commit" && |
56bfd762 EN |
78 | |
79 | git rm -rf othersub && | |
80 | git mv sub/file othersub && | |
81 | git commit -m "Commit to merge" && | |
82 | ||
83 | git checkout -b newhead mergeme~1 && | |
84 | >independent-change && | |
85 | git add independent-change && | |
86 | git commit -m "Completely unrelated change" | |
87 | ' | |
88 | ||
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 | ' | |
94 | ||
86273e57 | 95 | test_expect_success 'Cherry-pick with rename to different D/F conflict succeeds (recursive)' ' |
56bfd762 EN |
96 | git reset --hard && |
97 | git checkout -q newhead^0 && | |
98 | git cherry-pick --strategy=recursive mergeme | |
99 | ' | |
100 | ||
f433f705 | 101 | test_done |