]>
Commit | Line | Data |
---|---|---|
72d1216a FK |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2005 Fredrik Kuivinen | |
4 | # | |
5 | ||
6 | test_description='Test merge with directory/file conflicts' | |
7 | . ./test-lib.sh | |
8 | ||
d09c0a39 EN |
9 | test_expect_success 'prepare repository' ' |
10 | echo Hello >init && | |
11 | git add init && | |
12 | git commit -m initial && | |
13 | ||
14 | git branch B && | |
15 | mkdir dir && | |
16 | echo foo >dir/foo && | |
17 | git add dir/foo && | |
18 | git commit -m "File: dir/foo" && | |
19 | ||
20 | git checkout B && | |
21 | echo file dir >dir && | |
22 | git add dir && | |
23 | git commit -m "File: dir" | |
24 | ' | |
72d1216a | 25 | |
892e6f7e ÆAB |
26 | test_expect_success 'Merge with d/f conflicts' ' |
27 | test_expect_code 1 git merge "merge msg" B master | |
28 | ' | |
72d1216a | 29 | |
5a2580d6 | 30 | test_expect_success 'F/D conflict' ' |
1c9b2d3a AR |
31 | git reset --hard && |
32 | git checkout master && | |
33 | rm .git/index && | |
34 | ||
35 | mkdir before && | |
36 | echo FILE >before/one && | |
37 | echo FILE >after && | |
38 | git add . && | |
39 | git commit -m first && | |
40 | ||
41 | rm -f after && | |
42 | git mv before after && | |
43 | git commit -m move && | |
44 | ||
45 | git checkout -b para HEAD^ && | |
46 | echo COMPLETELY ANOTHER FILE >another && | |
47 | git add . && | |
48 | git commit -m para && | |
49 | ||
50 | git merge master | |
51 | ' | |
52 | ||
fa0ae3b1 EN |
53 | test_expect_success 'setup modify/delete + directory/file conflict' ' |
54 | git checkout --orphan modify && | |
55 | git rm -rf . && | |
56 | git clean -fdqx && | |
57 | ||
58 | printf "a\nb\nc\nd\ne\nf\ng\nh\n" >letters && | |
59 | git add letters && | |
60 | git commit -m initial && | |
61 | ||
f0fd4d05 EN |
62 | # Throw in letters.txt for sorting order fun |
63 | # ("letters.txt" sorts between "letters" and "letters/file") | |
fa0ae3b1 | 64 | echo i >>letters && |
f0fd4d05 EN |
65 | echo "version 2" >letters.txt && |
66 | git add letters letters.txt && | |
fa0ae3b1 EN |
67 | git commit -m modified && |
68 | ||
69 | git checkout -b delete HEAD^ && | |
70 | git rm letters && | |
71 | mkdir letters && | |
72 | >letters/file && | |
f0fd4d05 EN |
73 | echo "version 1" >letters.txt && |
74 | git add letters letters.txt && | |
fa0ae3b1 EN |
75 | git commit -m deleted |
76 | ' | |
77 | ||
84a08a47 | 78 | test_expect_success 'modify/delete + directory/file conflict' ' |
fa0ae3b1 EN |
79 | git checkout delete^0 && |
80 | test_must_fail git merge modify && | |
81 | ||
f0fd4d05 EN |
82 | test 5 -eq $(git ls-files -s | wc -l) && |
83 | test 4 -eq $(git ls-files -u | wc -l) && | |
84 | test 1 -eq $(git ls-files -o | wc -l) && | |
fa0ae3b1 EN |
85 | |
86 | test -f letters/file && | |
f0fd4d05 | 87 | test -f letters.txt && |
fa0ae3b1 EN |
88 | test -f letters~modify |
89 | ' | |
90 | ||
ef02b317 | 91 | test_expect_success 'modify/delete + directory/file conflict; other way' ' |
f0fd4d05 EN |
92 | # Yes, we really need the double reset since "letters" appears as |
93 | # both a file and a directory. | |
94 | git reset --hard && | |
fa0ae3b1 EN |
95 | git reset --hard && |
96 | git clean -f && | |
97 | git checkout modify^0 && | |
f0fd4d05 | 98 | |
fa0ae3b1 EN |
99 | test_must_fail git merge delete && |
100 | ||
f0fd4d05 EN |
101 | test 5 -eq $(git ls-files -s | wc -l) && |
102 | test 4 -eq $(git ls-files -u | wc -l) && | |
103 | test 1 -eq $(git ls-files -o | wc -l) && | |
fa0ae3b1 EN |
104 | |
105 | test -f letters/file && | |
f0fd4d05 | 106 | test -f letters.txt && |
fa0ae3b1 EN |
107 | test -f letters~HEAD |
108 | ' | |
109 | ||
72d1216a | 110 | test_done |