]>
Commit | Line | Data |
---|---|---|
30a95f30 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2006, Junio C Hamano | |
4 | # | |
5 | ||
6 | test_description='fmt-merge-msg test' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
30a95f30 JH |
10 | test_expect_success setup ' |
11 | echo one >one && | |
12 | git add one && | |
6183a6ad | 13 | test_tick && |
30a95f30 JH |
14 | git commit -m "Initial" && |
15 | ||
419fe5bc SB |
16 | git clone . remote && |
17 | ||
30a95f30 JH |
18 | echo uno >one && |
19 | echo dos >two && | |
20 | git add two && | |
6183a6ad | 21 | test_tick && |
30a95f30 JH |
22 | git commit -a -m "Second" && |
23 | ||
24 | git checkout -b left && | |
25 | ||
6183a6ad SB |
26 | echo "c1" >one && |
27 | test_tick && | |
30a95f30 JH |
28 | git commit -a -m "Common #1" && |
29 | ||
6183a6ad SB |
30 | echo "c2" >one && |
31 | test_tick && | |
30a95f30 JH |
32 | git commit -a -m "Common #2" && |
33 | ||
34 | git branch right && | |
35 | ||
6183a6ad SB |
36 | echo "l3" >two && |
37 | test_tick && | |
418a1435 JH |
38 | GIT_COMMITTER_NAME="Another Committer" \ |
39 | GIT_AUTHOR_NAME="Another Author" git commit -a -m "Left #3" && | |
30a95f30 | 40 | |
6183a6ad SB |
41 | echo "l4" >two && |
42 | test_tick && | |
418a1435 JH |
43 | GIT_COMMITTER_NAME="Another Committer" \ |
44 | GIT_AUTHOR_NAME="Another Author" git commit -a -m "Left #4" && | |
30a95f30 | 45 | |
6183a6ad SB |
46 | echo "l5" >two && |
47 | test_tick && | |
418a1435 JH |
48 | GIT_COMMITTER_NAME="Another Committer" \ |
49 | GIT_AUTHOR_NAME="Another Author" git commit -a -m "Left #5" && | |
6183a6ad | 50 | git tag tag-l5 && |
30a95f30 JH |
51 | |
52 | git checkout right && | |
53 | ||
6183a6ad | 54 | echo "r3" >three && |
30a95f30 | 55 | git add three && |
6183a6ad | 56 | test_tick && |
30a95f30 | 57 | git commit -a -m "Right #3" && |
6183a6ad | 58 | git tag tag-r3 && |
30a95f30 | 59 | |
6183a6ad SB |
60 | echo "r4" >three && |
61 | test_tick && | |
30a95f30 JH |
62 | git commit -a -m "Right #4" && |
63 | ||
6183a6ad SB |
64 | echo "r5" >three && |
65 | test_tick && | |
30a95f30 JH |
66 | git commit -a -m "Right #5" && |
67 | ||
6d6f6e68 SB |
68 | git checkout -b long && |
69 | i=0 && | |
70 | while test $i -lt 30 | |
71 | do | |
72 | test_commit $i one && | |
73 | i=$(($i+1)) | |
74 | done && | |
75 | ||
d834c96a | 76 | git show-branch && |
30a95f30 | 77 | |
d834c96a JN |
78 | apos="'\''" |
79 | ' | |
30a95f30 | 80 | |
d834c96a JN |
81 | test_expect_success 'message for merging local branch' ' |
82 | echo "Merge branch ${apos}left${apos}" >expected && | |
30a95f30 JH |
83 | |
84 | git checkout master && | |
85 | git fetch . left && | |
86 | ||
87 | git fmt-merge-msg <.git/FETCH_HEAD >actual && | |
3af82863 | 88 | test_cmp expected actual |
30a95f30 JH |
89 | ' |
90 | ||
d834c96a JN |
91 | test_expect_success 'message for merging external branch' ' |
92 | echo "Merge branch ${apos}left${apos} of $(pwd)" >expected && | |
30a95f30 JH |
93 | |
94 | git checkout master && | |
4114156a | 95 | git fetch "$(pwd)" left && |
30a95f30 JH |
96 | |
97 | git fmt-merge-msg <.git/FETCH_HEAD >actual && | |
3af82863 | 98 | test_cmp expected actual |
30a95f30 JH |
99 | ' |
100 | ||
d834c96a JN |
101 | test_expect_success '[merge] summary/log configuration' ' |
102 | cat >expected <<-EOF && | |
103 | Merge branch ${apos}left${apos} | |
30a95f30 | 104 | |
9830a9ca JH |
105 | # By Another Author (3) and A U Thor (2) |
106 | # Via Another Committer | |
d834c96a JN |
107 | * left: |
108 | Left #5 | |
109 | Left #4 | |
110 | Left #3 | |
111 | Common #2 | |
112 | Common #1 | |
113 | EOF | |
30a95f30 | 114 | |
6cd9cfef | 115 | git config merge.log true && |
d834c96a | 116 | test_might_fail git config --unset-all merge.summary && |
6cd9cfef SG |
117 | |
118 | git checkout master && | |
6183a6ad | 119 | test_tick && |
6cd9cfef SG |
120 | git fetch . left && |
121 | ||
d834c96a | 122 | git fmt-merge-msg <.git/FETCH_HEAD >actual1 && |
6cd9cfef | 123 | |
d834c96a | 124 | test_might_fail git config --unset-all merge.log && |
e0d10e1c | 125 | git config merge.summary true && |
30a95f30 JH |
126 | |
127 | git checkout master && | |
6183a6ad | 128 | test_tick && |
30a95f30 JH |
129 | git fetch . left && |
130 | ||
d834c96a | 131 | git fmt-merge-msg <.git/FETCH_HEAD >actual2 && |
30a95f30 | 132 | |
d834c96a JN |
133 | test_cmp expected actual1 && |
134 | test_cmp expected actual2 | |
135 | ' | |
30a95f30 | 136 | |
b928cbf1 RR |
137 | test_expect_success 'setup: clear [merge] configuration' ' |
138 | test_might_fail git config --unset-all merge.log && | |
139 | test_might_fail git config --unset-all merge.summary | |
140 | ' | |
141 | ||
142 | test_expect_success 'setup FETCH_HEAD' ' | |
143 | git checkout master && | |
144 | test_tick && | |
145 | git fetch . left | |
146 | ' | |
147 | ||
148 | test_expect_success 'merge.log=3 limits shortlog length' ' | |
149 | cat >expected <<-EOF && | |
150 | Merge branch ${apos}left${apos} | |
151 | ||
9830a9ca JH |
152 | # By Another Author (3) and A U Thor (2) |
153 | # Via Another Committer | |
b928cbf1 RR |
154 | * left: (5 commits) |
155 | Left #5 | |
156 | Left #4 | |
157 | Left #3 | |
158 | ... | |
159 | EOF | |
160 | ||
161 | git -c merge.log=3 fmt-merge-msg <.git/FETCH_HEAD >actual && | |
162 | test_cmp expected actual | |
163 | ' | |
164 | ||
165 | test_expect_success 'merge.log=5 shows all 5 commits' ' | |
166 | cat >expected <<-EOF && | |
167 | Merge branch ${apos}left${apos} | |
168 | ||
9830a9ca JH |
169 | # By Another Author (3) and A U Thor (2) |
170 | # Via Another Committer | |
b928cbf1 RR |
171 | * left: |
172 | Left #5 | |
173 | Left #4 | |
174 | Left #3 | |
175 | Common #2 | |
176 | Common #1 | |
177 | EOF | |
178 | ||
179 | git -c merge.log=5 fmt-merge-msg <.git/FETCH_HEAD >actual && | |
180 | test_cmp expected actual | |
181 | ' | |
182 | ||
183 | test_expect_success 'merge.log=0 disables shortlog' ' | |
184 | echo "Merge branch ${apos}left${apos}" >expected | |
185 | git -c merge.log=0 fmt-merge-msg <.git/FETCH_HEAD >actual && | |
186 | test_cmp expected actual | |
187 | ' | |
188 | ||
bd2549ca RR |
189 | test_expect_success '--log=3 limits shortlog length' ' |
190 | cat >expected <<-EOF && | |
191 | Merge branch ${apos}left${apos} | |
192 | ||
9830a9ca JH |
193 | # By Another Author (3) and A U Thor (2) |
194 | # Via Another Committer | |
bd2549ca RR |
195 | * left: (5 commits) |
196 | Left #5 | |
197 | Left #4 | |
198 | Left #3 | |
199 | ... | |
200 | EOF | |
201 | ||
202 | git fmt-merge-msg --log=3 <.git/FETCH_HEAD >actual && | |
203 | test_cmp expected actual | |
204 | ' | |
205 | ||
206 | test_expect_success '--log=5 shows all 5 commits' ' | |
207 | cat >expected <<-EOF && | |
208 | Merge branch ${apos}left${apos} | |
209 | ||
9830a9ca JH |
210 | # By Another Author (3) and A U Thor (2) |
211 | # Via Another Committer | |
bd2549ca RR |
212 | * left: |
213 | Left #5 | |
214 | Left #4 | |
215 | Left #3 | |
216 | Common #2 | |
217 | Common #1 | |
218 | EOF | |
219 | ||
220 | git fmt-merge-msg --log=5 <.git/FETCH_HEAD >actual && | |
221 | test_cmp expected actual | |
222 | ' | |
223 | ||
224 | test_expect_success '--no-log disables shortlog' ' | |
225 | echo "Merge branch ${apos}left${apos}" >expected && | |
226 | git fmt-merge-msg --no-log <.git/FETCH_HEAD >actual && | |
227 | test_cmp expected actual | |
228 | ' | |
229 | ||
230 | test_expect_success '--log=0 disables shortlog' ' | |
231 | echo "Merge branch ${apos}left${apos}" >expected && | |
232 | git fmt-merge-msg --no-log <.git/FETCH_HEAD >actual && | |
233 | test_cmp expected actual | |
234 | ' | |
235 | ||
2102440c JN |
236 | test_expect_success 'fmt-merge-msg -m' ' |
237 | echo "Sync with left" >expected && | |
238 | cat >expected.log <<-EOF && | |
239 | Sync with left | |
240 | ||
9830a9ca JH |
241 | # By Another Author (3) and A U Thor (2) |
242 | # Via Another Committer | |
2102440c JN |
243 | * ${apos}left${apos} of $(pwd): |
244 | Left #5 | |
245 | Left #4 | |
246 | Left #3 | |
247 | Common #2 | |
248 | Common #1 | |
249 | EOF | |
250 | ||
251 | test_might_fail git config --unset merge.log && | |
252 | test_might_fail git config --unset merge.summary && | |
253 | git checkout master && | |
254 | git fetch "$(pwd)" left && | |
255 | git fmt-merge-msg -m "Sync with left" <.git/FETCH_HEAD >actual && | |
256 | git fmt-merge-msg --log -m "Sync with left" \ | |
257 | <.git/FETCH_HEAD >actual.log && | |
258 | git config merge.log true && | |
259 | git fmt-merge-msg -m "Sync with left" \ | |
260 | <.git/FETCH_HEAD >actual.log-config && | |
261 | git fmt-merge-msg --no-log -m "Sync with left" \ | |
262 | <.git/FETCH_HEAD >actual.nolog && | |
263 | ||
264 | test_cmp expected actual && | |
265 | test_cmp expected.log actual.log && | |
266 | test_cmp expected.log actual.log-config && | |
267 | test_cmp expected actual.nolog | |
268 | ' | |
269 | ||
d834c96a JN |
270 | test_expect_success 'setup: expected shortlog for two branches' ' |
271 | cat >expected <<-EOF | |
272 | Merge branches ${apos}left${apos} and ${apos}right${apos} | |
273 | ||
9830a9ca JH |
274 | # By Another Author (3) and A U Thor (2) |
275 | # Via Another Committer | |
d834c96a JN |
276 | * left: |
277 | Left #5 | |
278 | Left #4 | |
279 | Left #3 | |
280 | Common #2 | |
281 | Common #1 | |
282 | ||
283 | * right: | |
284 | Right #5 | |
285 | Right #4 | |
286 | Right #3 | |
287 | Common #2 | |
288 | Common #1 | |
289 | EOF | |
290 | ' | |
6cd9cfef | 291 | |
d834c96a | 292 | test_expect_success 'shortlog for two branches' ' |
6cd9cfef | 293 | git config merge.log true && |
d834c96a | 294 | test_might_fail git config --unset-all merge.summary && |
6cd9cfef | 295 | git checkout master && |
6183a6ad | 296 | test_tick && |
6cd9cfef | 297 | git fetch . left right && |
d834c96a | 298 | git fmt-merge-msg <.git/FETCH_HEAD >actual1 && |
6cd9cfef | 299 | |
d834c96a | 300 | test_might_fail git config --unset-all merge.log && |
e0d10e1c | 301 | git config merge.summary true && |
30a95f30 | 302 | git checkout master && |
6183a6ad | 303 | test_tick && |
30a95f30 | 304 | git fetch . left right && |
d834c96a | 305 | git fmt-merge-msg <.git/FETCH_HEAD >actual2 && |
30a95f30 | 306 | |
6cd9cfef | 307 | git config merge.log yes && |
d834c96a | 308 | test_might_fail git config --unset-all merge.summary && |
6cd9cfef | 309 | git checkout master && |
6183a6ad | 310 | test_tick && |
6cd9cfef | 311 | git fetch . left right && |
d834c96a | 312 | git fmt-merge-msg <.git/FETCH_HEAD >actual3 && |
6cd9cfef | 313 | |
d834c96a | 314 | test_might_fail git config --unset-all merge.log && |
e0d10e1c | 315 | git config merge.summary yes && |
30a95f30 | 316 | git checkout master && |
6183a6ad | 317 | test_tick && |
30a95f30 | 318 | git fetch . left right && |
d834c96a | 319 | git fmt-merge-msg <.git/FETCH_HEAD >actual4 && |
30a95f30 | 320 | |
d834c96a JN |
321 | test_cmp expected actual1 && |
322 | test_cmp expected actual2 && | |
323 | test_cmp expected actual3 && | |
324 | test_cmp expected actual4 | |
30a95f30 JH |
325 | ' |
326 | ||
4c8d4c14 | 327 | test_expect_success 'merge-msg -F' ' |
d834c96a | 328 | test_might_fail git config --unset-all merge.log && |
4c8d4c14 | 329 | git config merge.summary yes && |
4c8d4c14 | 330 | git checkout master && |
6183a6ad | 331 | test_tick && |
4c8d4c14 | 332 | git fetch . left right && |
4c8d4c14 SB |
333 | git fmt-merge-msg -F .git/FETCH_HEAD >actual && |
334 | test_cmp expected actual | |
335 | ' | |
336 | ||
337 | test_expect_success 'merge-msg -F in subdirectory' ' | |
d834c96a | 338 | test_might_fail git config --unset-all merge.log && |
4c8d4c14 | 339 | git config merge.summary yes && |
4c8d4c14 | 340 | git checkout master && |
6183a6ad | 341 | test_tick && |
4c8d4c14 SB |
342 | git fetch . left right && |
343 | mkdir sub && | |
344 | cp .git/FETCH_HEAD sub/FETCH_HEAD && | |
345 | ( | |
346 | cd sub && | |
347 | git fmt-merge-msg -F FETCH_HEAD >../actual | |
348 | ) && | |
349 | test_cmp expected actual | |
350 | ' | |
351 | ||
419fe5bc | 352 | test_expect_success 'merge-msg with nothing to merge' ' |
d834c96a | 353 | test_might_fail git config --unset-all merge.log && |
419fe5bc SB |
354 | git config merge.summary yes && |
355 | ||
d834c96a JN |
356 | >empty && |
357 | ||
419fe5bc SB |
358 | ( |
359 | cd remote && | |
360 | git checkout -b unrelated && | |
6183a6ad | 361 | test_tick && |
419fe5bc SB |
362 | git fetch origin && |
363 | git fmt-merge-msg <.git/FETCH_HEAD >../actual | |
364 | ) && | |
365 | ||
d834c96a | 366 | test_cmp empty actual |
419fe5bc SB |
367 | ' |
368 | ||
6d6f6e68 | 369 | test_expect_success 'merge-msg tag' ' |
d834c96a JN |
370 | cat >expected <<-EOF && |
371 | Merge tag ${apos}tag-r3${apos} | |
372 | ||
373 | * tag ${apos}tag-r3${apos}: | |
374 | Right #3 | |
375 | Common #2 | |
376 | Common #1 | |
377 | EOF | |
6d6f6e68 | 378 | |
d834c96a | 379 | test_might_fail git config --unset-all merge.log && |
6d6f6e68 SB |
380 | git config merge.summary yes && |
381 | ||
382 | git checkout master && | |
383 | test_tick && | |
384 | git fetch . tag tag-r3 && | |
385 | ||
386 | git fmt-merge-msg <.git/FETCH_HEAD >actual && | |
387 | test_cmp expected actual | |
388 | ' | |
389 | ||
6d6f6e68 | 390 | test_expect_success 'merge-msg two tags' ' |
d834c96a JN |
391 | cat >expected <<-EOF && |
392 | Merge tags ${apos}tag-r3${apos} and ${apos}tag-l5${apos} | |
393 | ||
394 | * tag ${apos}tag-r3${apos}: | |
395 | Right #3 | |
396 | Common #2 | |
397 | Common #1 | |
398 | ||
9830a9ca JH |
399 | # By Another Author (3) and A U Thor (2) |
400 | # Via Another Committer | |
d834c96a JN |
401 | * tag ${apos}tag-l5${apos}: |
402 | Left #5 | |
403 | Left #4 | |
404 | Left #3 | |
405 | Common #2 | |
406 | Common #1 | |
407 | EOF | |
408 | ||
409 | test_might_fail git config --unset-all merge.log && | |
6d6f6e68 SB |
410 | git config merge.summary yes && |
411 | ||
412 | git checkout master && | |
413 | test_tick && | |
414 | git fetch . tag tag-r3 tag tag-l5 && | |
415 | ||
416 | git fmt-merge-msg <.git/FETCH_HEAD >actual && | |
417 | test_cmp expected actual | |
418 | ' | |
419 | ||
6d6f6e68 | 420 | test_expect_success 'merge-msg tag and branch' ' |
d834c96a JN |
421 | cat >expected <<-EOF && |
422 | Merge branch ${apos}left${apos}, tag ${apos}tag-r3${apos} | |
423 | ||
424 | * tag ${apos}tag-r3${apos}: | |
425 | Right #3 | |
426 | Common #2 | |
427 | Common #1 | |
428 | ||
9830a9ca JH |
429 | # By Another Author (3) and A U Thor (2) |
430 | # Via Another Committer | |
d834c96a JN |
431 | * left: |
432 | Left #5 | |
433 | Left #4 | |
434 | Left #3 | |
435 | Common #2 | |
436 | Common #1 | |
437 | EOF | |
438 | ||
439 | test_might_fail git config --unset-all merge.log && | |
6d6f6e68 SB |
440 | git config merge.summary yes && |
441 | ||
442 | git checkout master && | |
443 | test_tick && | |
444 | git fetch . tag tag-r3 left && | |
445 | ||
446 | git fmt-merge-msg <.git/FETCH_HEAD >actual && | |
447 | test_cmp expected actual | |
448 | ' | |
449 | ||
6d6f6e68 | 450 | test_expect_success 'merge-msg lots of commits' ' |
d834c96a JN |
451 | { |
452 | cat <<-EOF && | |
453 | Merge branch ${apos}long${apos} | |
454 | ||
455 | * long: (35 commits) | |
456 | EOF | |
457 | ||
458 | i=29 && | |
459 | while test $i -gt 9 | |
460 | do | |
461 | echo " $i" && | |
462 | i=$(($i-1)) | |
463 | done && | |
464 | echo " ..." | |
465 | } >expected && | |
6d6f6e68 SB |
466 | |
467 | git checkout master && | |
468 | test_tick && | |
469 | git fetch . long && | |
470 | ||
6d6f6e68 SB |
471 | git fmt-merge-msg <.git/FETCH_HEAD >actual && |
472 | test_cmp expected actual | |
473 | ' | |
474 | ||
30a95f30 | 475 | test_done |