]>
Commit | Line | Data |
---|---|---|
4e5dd044 JF |
1 | #!/bin/sh |
2 | ||
3 | test_description='merge-recursive options | |
4 | ||
5 | * [master] Clarify | |
6 | ! [remote] Remove cruft | |
7 | -- | |
8 | + [remote] Remove cruft | |
9 | * [master] Clarify | |
10 | *+ [remote^] Initial revision | |
11 | * ok 1: setup | |
12 | ' | |
13 | ||
14 | . ./test-lib.sh | |
15 | ||
906a9a7d | 16 | test_have_prereq SED_STRIPS_CR && SED_OPTIONS=-b |
a28adc2d | 17 | test_have_prereq MINGW && export GREP_OPTIONS=-U |
906a9a7d | 18 | |
4e5dd044 JF |
19 | test_expect_success 'setup' ' |
20 | conflict_hunks () { | |
906a9a7d | 21 | sed $SED_OPTIONS -n -e " |
bc2d1594 | 22 | /^<<<</ b conflict |
4e5dd044 | 23 | b |
bc2d1594 | 24 | : conflict |
4e5dd044 JF |
25 | p |
26 | /^>>>>/ b | |
27 | n | |
bc2d1594 | 28 | b conflict |
4e5dd044 JF |
29 | " "$@" |
30 | } && | |
31 | ||
32 | cat <<-\EOF >text.txt && | |
33 | Hope, he says, cherishes the soul of him who lives in | |
34 | justice and holiness and is the nurse of his age and the | |
35 | companion of his journey;--hope which is mightiest to sway | |
36 | the restless soul of man. | |
37 | ||
38 | How admirable are his words! And the great blessing of riches, I do | |
39 | not say to every man, but to a good man, is, that he has had no | |
40 | occasion to deceive or to defraud others, either intentionally or | |
41 | unintentionally; and when he departs to the world below he is not in | |
42 | any apprehension about offerings due to the gods or debts which he owes | |
43 | to men. Now to this peace of mind the possession of wealth greatly | |
44 | contributes; and therefore I say, that, setting one thing against | |
45 | another, of the many advantages which wealth has to give, to a man of | |
46 | sense this is in my opinion the greatest. | |
47 | ||
48 | Well said, Cephalus, I replied; but as concerning justice, what is | |
49 | it?--to speak the truth and to pay your debts--no more than this? And | |
50 | even to this are there not exceptions? Suppose that a friend when in | |
51 | his right mind has deposited arms with me and he asks for them when he | |
52 | is not in his right mind, ought I to give them back to him? No one | |
53 | would say that I ought or that I should be right in doing so, any more | |
54 | than they would say that I ought always to speak the truth to one who | |
55 | is in his condition. | |
56 | ||
57 | You are quite right, he replied. | |
58 | ||
59 | But then, I said, speaking the truth and paying your debts is not a | |
60 | correct definition of justice. | |
61 | ||
62 | CEPHALUS - SOCRATES - POLEMARCHUS | |
63 | ||
64 | Quite correct, Socrates, if Simonides is to be believed, said | |
65 | Polemarchus interposing. | |
66 | ||
67 | I fear, said Cephalus, that I must go now, for I have to look after the | |
68 | sacrifices, and I hand over the argument to Polemarchus and the company. | |
69 | EOF | |
70 | git add text.txt && | |
71 | test_tick && | |
72 | git commit -m "Initial revision" && | |
73 | ||
74 | git checkout -b remote && | |
75 | sed -e " | |
76 | s/\. /\. /g | |
77 | s/[?] /? /g | |
78 | s/ / /g | |
79 | s/--/---/g | |
80 | s/but as concerning/but as con cerning/ | |
81 | /CEPHALUS - SOCRATES - POLEMARCHUS/ d | |
82 | " text.txt >text.txt+ && | |
83 | mv text.txt+ text.txt && | |
84 | git commit -a -m "Remove cruft" && | |
85 | ||
86 | git checkout master && | |
87 | sed -e " | |
88 | s/\(not in his right mind\),\(.*\)/\1;\2Q/ | |
89 | s/Quite correct\(.*\)/It is too correct\1Q/ | |
90 | s/unintentionally/un intentionally/ | |
91 | /un intentionally/ s/$/Q/ | |
92 | s/Polemarchus interposing./Polemarchus, interposing.Q/ | |
93 | /justice and holiness/ s/$/Q/ | |
94 | /pay your debts/ s/$/Q/ | |
95 | " text.txt | q_to_cr >text.txt+ && | |
96 | mv text.txt+ text.txt && | |
97 | git commit -a -m "Clarify" && | |
98 | git show-branch --all | |
99 | ' | |
100 | ||
101 | test_expect_success 'naive merge fails' ' | |
102 | git read-tree --reset -u HEAD && | |
103 | test_must_fail git merge-recursive HEAD^ -- HEAD remote && | |
104 | test_must_fail git update-index --refresh && | |
105 | grep "<<<<<<" text.txt | |
106 | ' | |
107 | ||
108 | test_expect_success '--ignore-space-change makes merge succeed' ' | |
109 | git read-tree --reset -u HEAD && | |
110 | git merge-recursive --ignore-space-change HEAD^ -- HEAD remote | |
111 | ' | |
112 | ||
67ac1e1d JN |
113 | test_expect_success 'naive cherry-pick fails' ' |
114 | git read-tree --reset -u HEAD && | |
115 | test_must_fail git cherry-pick --no-commit remote && | |
116 | git read-tree --reset -u HEAD && | |
117 | test_must_fail git cherry-pick remote && | |
118 | test_must_fail git update-index --refresh && | |
119 | grep "<<<<<<" text.txt | |
120 | ' | |
121 | ||
122 | test_expect_success '-Xignore-space-change makes cherry-pick succeed' ' | |
123 | git read-tree --reset -u HEAD && | |
124 | git cherry-pick --no-commit -Xignore-space-change remote | |
125 | ' | |
126 | ||
4e5dd044 JF |
127 | test_expect_success '--ignore-space-change: our w/s-only change wins' ' |
128 | q_to_cr <<-\EOF >expected && | |
129 | justice and holiness and is the nurse of his age and theQ | |
130 | EOF | |
131 | ||
132 | git read-tree --reset -u HEAD && | |
133 | git merge-recursive --ignore-space-change HEAD^ -- HEAD remote && | |
134 | grep "justice and holiness" text.txt >actual && | |
135 | test_cmp expected actual | |
136 | ' | |
137 | ||
138 | test_expect_success '--ignore-space-change: their real change wins over w/s' ' | |
139 | cat <<-\EOF >expected && | |
140 | it?---to speak the truth and to pay your debts---no more than this? And | |
141 | EOF | |
142 | ||
143 | git read-tree --reset -u HEAD && | |
144 | git merge-recursive --ignore-space-change HEAD^ -- HEAD remote && | |
145 | grep "pay your debts" text.txt >actual && | |
146 | test_cmp expected actual | |
147 | ' | |
148 | ||
149 | test_expect_success '--ignore-space-change: does not ignore new spaces' ' | |
150 | cat <<-\EOF >expected1 && | |
151 | Well said, Cephalus, I replied; but as con cerning justice, what is | |
152 | EOF | |
153 | q_to_cr <<-\EOF >expected2 && | |
154 | un intentionally; and when he departs to the world below he is not inQ | |
155 | EOF | |
156 | ||
157 | git read-tree --reset -u HEAD && | |
158 | git merge-recursive --ignore-space-change HEAD^ -- HEAD remote && | |
159 | grep "Well said" text.txt >actual1 && | |
160 | grep "when he departs" text.txt >actual2 && | |
161 | test_cmp expected1 actual1 && | |
162 | test_cmp expected2 actual2 | |
163 | ' | |
164 | ||
165 | test_expect_success '--ignore-all-space drops their new spaces' ' | |
166 | cat <<-\EOF >expected && | |
167 | Well said, Cephalus, I replied; but as concerning justice, what is | |
168 | EOF | |
169 | ||
170 | git read-tree --reset -u HEAD && | |
171 | git merge-recursive --ignore-all-space HEAD^ -- HEAD remote && | |
172 | grep "Well said" text.txt >actual && | |
173 | test_cmp expected actual | |
174 | ' | |
175 | ||
176 | test_expect_success '--ignore-all-space keeps our new spaces' ' | |
177 | q_to_cr <<-\EOF >expected && | |
178 | un intentionally; and when he departs to the world below he is not inQ | |
179 | EOF | |
180 | ||
181 | git read-tree --reset -u HEAD && | |
182 | git merge-recursive --ignore-all-space HEAD^ -- HEAD remote && | |
183 | grep "when he departs" text.txt >actual && | |
184 | test_cmp expected actual | |
185 | ' | |
186 | ||
187 | test_expect_success '--ignore-space-at-eol' ' | |
188 | q_to_cr <<-\EOF >expected && | |
189 | <<<<<<< HEAD | |
190 | is not in his right mind; ought I to give them back to him? No oneQ | |
191 | ======= | |
192 | is not in his right mind, ought I to give them back to him? No one | |
193 | >>>>>>> remote | |
194 | EOF | |
195 | ||
196 | git read-tree --reset -u HEAD && | |
197 | test_must_fail git merge-recursive --ignore-space-at-eol \ | |
198 | HEAD^ -- HEAD remote && | |
199 | conflict_hunks text.txt >actual && | |
200 | test_cmp expected actual | |
201 | ' | |
202 | ||
203 | test_done |