]>
Commit | Line | Data |
---|---|---|
fce135c4 KS |
1 | #!/bin/sh |
2 | ||
3 | test_description='combined diff show only paths that are different to all parents' | |
4 | ||
8f37854b | 5 | GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
334afbc7 JS |
6 | export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
7 | ||
3e3b9321 | 8 | TEST_PASSES_SANITIZE_LEAK=true |
fce135c4 KS |
9 | . ./test-lib.sh |
10 | ||
11 | # verify that diffc.expect matches output of | |
274447aa | 12 | # $(git diff -c --name-only HEAD HEAD^ HEAD^2) |
fce135c4 KS |
13 | diffc_verify () { |
14 | git diff -c --name-only HEAD HEAD^ HEAD^2 >diffc.actual && | |
15 | test_cmp diffc.expect diffc.actual | |
16 | } | |
17 | ||
18 | test_expect_success 'trivial merge - combine-diff empty' ' | |
19 | for i in $(test_seq 1 9) | |
20 | do | |
64d1022e | 21 | echo $i >$i.txt && |
cbe1d9d6 | 22 | git add $i.txt || return 1 |
fce135c4 KS |
23 | done && |
24 | git commit -m "init" && | |
25 | git checkout -b side && | |
26 | for i in $(test_seq 2 9) | |
27 | do | |
cbe1d9d6 | 28 | echo $i/2 >>$i.txt || return 1 |
fce135c4 KS |
29 | done && |
30 | git commit -a -m "side 2-9" && | |
8f37854b | 31 | git checkout main && |
fce135c4 | 32 | echo 1/2 >1.txt && |
8f37854b | 33 | git commit -a -m "main 1" && |
fce135c4 KS |
34 | git merge side && |
35 | >diffc.expect && | |
36 | diffc_verify | |
37 | ' | |
38 | ||
39 | ||
4dc8b1c1 | 40 | test_expect_success 'only one truly conflicting path' ' |
fce135c4 KS |
41 | git checkout side && |
42 | for i in $(test_seq 2 9) | |
43 | do | |
cbe1d9d6 | 44 | echo $i/3 >>$i.txt || return 1 |
fce135c4 KS |
45 | done && |
46 | echo "4side" >>4.txt && | |
47 | git commit -a -m "side 2-9 +4" && | |
8f37854b | 48 | git checkout main && |
fce135c4 KS |
49 | for i in $(test_seq 1 9) |
50 | do | |
cbe1d9d6 | 51 | echo $i/3 >>$i.txt || return 1 |
fce135c4 | 52 | done && |
8f37854b JS |
53 | echo "4main" >>4.txt && |
54 | git commit -a -m "main 1-9 +4" && | |
fce135c4 KS |
55 | test_must_fail git merge side && |
56 | cat <<-\EOF >4.txt && | |
57 | 4 | |
58 | 4/2 | |
59 | 4/3 | |
8f37854b | 60 | 4main |
fce135c4 KS |
61 | 4side |
62 | EOF | |
63 | git add 4.txt && | |
64 | git commit -m "merge side (2)" && | |
65 | echo 4.txt >diffc.expect && | |
66 | diffc_verify | |
67 | ' | |
68 | ||
69 | test_expect_success 'merge introduces new file' ' | |
70 | git checkout side && | |
71 | for i in $(test_seq 5 9) | |
72 | do | |
cbe1d9d6 | 73 | echo $i/4 >>$i.txt || return 1 |
fce135c4 KS |
74 | done && |
75 | git commit -a -m "side 5-9" && | |
8f37854b | 76 | git checkout main && |
fce135c4 KS |
77 | for i in $(test_seq 1 3) |
78 | do | |
cbe1d9d6 | 79 | echo $i/4 >>$i.txt || return 1 |
fce135c4 | 80 | done && |
8f37854b | 81 | git commit -a -m "main 1-3 +4hello" && |
fce135c4 KS |
82 | git merge side && |
83 | echo "Hello World" >4hello.txt && | |
84 | git add 4hello.txt && | |
85 | git commit --amend && | |
86 | echo 4hello.txt >diffc.expect && | |
87 | diffc_verify | |
88 | ' | |
89 | ||
90 | test_expect_success 'merge removed a file' ' | |
91 | git checkout side && | |
92 | for i in $(test_seq 5 9) | |
93 | do | |
cbe1d9d6 | 94 | echo $i/5 >>$i.txt || return 1 |
fce135c4 KS |
95 | done && |
96 | git commit -a -m "side 5-9" && | |
8f37854b | 97 | git checkout main && |
fce135c4 KS |
98 | for i in $(test_seq 1 3) |
99 | do | |
cbe1d9d6 | 100 | echo $i/4 >>$i.txt || return 1 |
fce135c4 | 101 | done && |
8f37854b | 102 | git commit -a -m "main 1-3" && |
fce135c4 KS |
103 | git merge side && |
104 | git rm 4.txt && | |
105 | git commit --amend && | |
106 | echo 4.txt >diffc.expect && | |
107 | diffc_verify | |
108 | ' | |
109 | ||
110 | test_done |