]>
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 | |
9a94dba0 JH |
115 | test_config merge.log true && |
116 | test_unconfig 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 | |
9a94dba0 JH |
124 | test_unconfig merge.log && |
125 | test_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 FETCH_HEAD' ' |
138 | git checkout master && | |
139 | test_tick && | |
140 | git fetch . left | |
141 | ' | |
142 | ||
143 | test_expect_success 'merge.log=3 limits shortlog length' ' | |
144 | cat >expected <<-EOF && | |
145 | Merge branch ${apos}left${apos} | |
146 | ||
9830a9ca JH |
147 | # By Another Author (3) and A U Thor (2) |
148 | # Via Another Committer | |
b928cbf1 RR |
149 | * left: (5 commits) |
150 | Left #5 | |
151 | Left #4 | |
152 | Left #3 | |
153 | ... | |
154 | EOF | |
155 | ||
156 | git -c merge.log=3 fmt-merge-msg <.git/FETCH_HEAD >actual && | |
157 | test_cmp expected actual | |
158 | ' | |
159 | ||
160 | test_expect_success 'merge.log=5 shows all 5 commits' ' | |
161 | cat >expected <<-EOF && | |
162 | Merge branch ${apos}left${apos} | |
163 | ||
9830a9ca JH |
164 | # By Another Author (3) and A U Thor (2) |
165 | # Via Another Committer | |
b928cbf1 RR |
166 | * left: |
167 | Left #5 | |
168 | Left #4 | |
169 | Left #3 | |
170 | Common #2 | |
171 | Common #1 | |
172 | EOF | |
173 | ||
174 | git -c merge.log=5 fmt-merge-msg <.git/FETCH_HEAD >actual && | |
175 | test_cmp expected actual | |
176 | ' | |
177 | ||
9927ebed RT |
178 | test_expect_success '--log=5 with custom comment character' ' |
179 | cat >expected <<-EOF && | |
180 | Merge branch ${apos}left${apos} | |
181 | ||
16a794de JS |
182 | x By Another Author (3) and A U Thor (2) |
183 | x Via Another Committer | |
9927ebed RT |
184 | * left: |
185 | Left #5 | |
186 | Left #4 | |
187 | Left #3 | |
188 | Common #2 | |
189 | Common #1 | |
190 | EOF | |
191 | ||
16a794de | 192 | git -c core.commentchar="x" fmt-merge-msg --log=5 <.git/FETCH_HEAD >actual && |
9927ebed RT |
193 | test_cmp expected actual |
194 | ' | |
195 | ||
b928cbf1 | 196 | test_expect_success 'merge.log=0 disables shortlog' ' |
99094a7a | 197 | echo "Merge branch ${apos}left${apos}" >expected && |
b928cbf1 RR |
198 | git -c merge.log=0 fmt-merge-msg <.git/FETCH_HEAD >actual && |
199 | test_cmp expected actual | |
200 | ' | |
201 | ||
bd2549ca RR |
202 | test_expect_success '--log=3 limits shortlog length' ' |
203 | cat >expected <<-EOF && | |
204 | Merge branch ${apos}left${apos} | |
205 | ||
9830a9ca JH |
206 | # By Another Author (3) and A U Thor (2) |
207 | # Via Another Committer | |
bd2549ca RR |
208 | * left: (5 commits) |
209 | Left #5 | |
210 | Left #4 | |
211 | Left #3 | |
212 | ... | |
213 | EOF | |
214 | ||
215 | git fmt-merge-msg --log=3 <.git/FETCH_HEAD >actual && | |
216 | test_cmp expected actual | |
217 | ' | |
218 | ||
219 | test_expect_success '--log=5 shows all 5 commits' ' | |
220 | cat >expected <<-EOF && | |
221 | Merge branch ${apos}left${apos} | |
222 | ||
9830a9ca JH |
223 | # By Another Author (3) and A U Thor (2) |
224 | # Via Another Committer | |
bd2549ca RR |
225 | * left: |
226 | Left #5 | |
227 | Left #4 | |
228 | Left #3 | |
229 | Common #2 | |
230 | Common #1 | |
231 | EOF | |
232 | ||
233 | git fmt-merge-msg --log=5 <.git/FETCH_HEAD >actual && | |
234 | test_cmp expected actual | |
235 | ' | |
236 | ||
237 | test_expect_success '--no-log disables shortlog' ' | |
238 | echo "Merge branch ${apos}left${apos}" >expected && | |
239 | git fmt-merge-msg --no-log <.git/FETCH_HEAD >actual && | |
240 | test_cmp expected actual | |
241 | ' | |
242 | ||
243 | test_expect_success '--log=0 disables shortlog' ' | |
244 | echo "Merge branch ${apos}left${apos}" >expected && | |
245 | git fmt-merge-msg --no-log <.git/FETCH_HEAD >actual && | |
246 | test_cmp expected actual | |
247 | ' | |
248 | ||
2102440c JN |
249 | test_expect_success 'fmt-merge-msg -m' ' |
250 | echo "Sync with left" >expected && | |
251 | cat >expected.log <<-EOF && | |
252 | Sync with left | |
253 | ||
9830a9ca JH |
254 | # By Another Author (3) and A U Thor (2) |
255 | # Via Another Committer | |
2102440c JN |
256 | * ${apos}left${apos} of $(pwd): |
257 | Left #5 | |
258 | Left #4 | |
259 | Left #3 | |
260 | Common #2 | |
261 | Common #1 | |
262 | EOF | |
263 | ||
9a94dba0 JH |
264 | test_unconfig merge.log && |
265 | test_unconfig merge.summary && | |
2102440c JN |
266 | git checkout master && |
267 | git fetch "$(pwd)" left && | |
268 | git fmt-merge-msg -m "Sync with left" <.git/FETCH_HEAD >actual && | |
269 | git fmt-merge-msg --log -m "Sync with left" \ | |
270 | <.git/FETCH_HEAD >actual.log && | |
9a94dba0 | 271 | test_config merge.log true && |
2102440c JN |
272 | git fmt-merge-msg -m "Sync with left" \ |
273 | <.git/FETCH_HEAD >actual.log-config && | |
274 | git fmt-merge-msg --no-log -m "Sync with left" \ | |
275 | <.git/FETCH_HEAD >actual.nolog && | |
276 | ||
277 | test_cmp expected actual && | |
278 | test_cmp expected.log actual.log && | |
279 | test_cmp expected.log actual.log-config && | |
280 | test_cmp expected actual.nolog | |
281 | ' | |
282 | ||
d834c96a JN |
283 | test_expect_success 'setup: expected shortlog for two branches' ' |
284 | cat >expected <<-EOF | |
285 | Merge branches ${apos}left${apos} and ${apos}right${apos} | |
286 | ||
9830a9ca JH |
287 | # By Another Author (3) and A U Thor (2) |
288 | # Via Another Committer | |
d834c96a JN |
289 | * left: |
290 | Left #5 | |
291 | Left #4 | |
292 | Left #3 | |
293 | Common #2 | |
294 | Common #1 | |
295 | ||
296 | * right: | |
297 | Right #5 | |
298 | Right #4 | |
299 | Right #3 | |
300 | Common #2 | |
301 | Common #1 | |
302 | EOF | |
303 | ' | |
6cd9cfef | 304 | |
d834c96a | 305 | test_expect_success 'shortlog for two branches' ' |
9a94dba0 JH |
306 | test_config merge.log true && |
307 | test_unconfig merge.summary && | |
6cd9cfef | 308 | git checkout master && |
6183a6ad | 309 | test_tick && |
6cd9cfef | 310 | git fetch . left right && |
d834c96a | 311 | git fmt-merge-msg <.git/FETCH_HEAD >actual1 && |
6cd9cfef | 312 | |
9a94dba0 JH |
313 | test_unconfig merge.log && |
314 | test_config merge.summary true && | |
30a95f30 | 315 | git checkout master && |
6183a6ad | 316 | test_tick && |
30a95f30 | 317 | git fetch . left right && |
d834c96a | 318 | git fmt-merge-msg <.git/FETCH_HEAD >actual2 && |
30a95f30 | 319 | |
9a94dba0 JH |
320 | test_config merge.log yes && |
321 | test_unconfig merge.summary && | |
6cd9cfef | 322 | git checkout master && |
6183a6ad | 323 | test_tick && |
6cd9cfef | 324 | git fetch . left right && |
d834c96a | 325 | git fmt-merge-msg <.git/FETCH_HEAD >actual3 && |
6cd9cfef | 326 | |
9a94dba0 JH |
327 | test_unconfig merge.log && |
328 | test_config merge.summary yes && | |
30a95f30 | 329 | git checkout master && |
6183a6ad | 330 | test_tick && |
30a95f30 | 331 | git fetch . left right && |
d834c96a | 332 | git fmt-merge-msg <.git/FETCH_HEAD >actual4 && |
30a95f30 | 333 | |
d834c96a JN |
334 | test_cmp expected actual1 && |
335 | test_cmp expected actual2 && | |
336 | test_cmp expected actual3 && | |
337 | test_cmp expected actual4 | |
30a95f30 JH |
338 | ' |
339 | ||
4c8d4c14 | 340 | test_expect_success 'merge-msg -F' ' |
9a94dba0 JH |
341 | test_unconfig merge.log && |
342 | test_config merge.summary yes && | |
4c8d4c14 | 343 | git checkout master && |
6183a6ad | 344 | test_tick && |
4c8d4c14 | 345 | git fetch . left right && |
4c8d4c14 SB |
346 | git fmt-merge-msg -F .git/FETCH_HEAD >actual && |
347 | test_cmp expected actual | |
348 | ' | |
349 | ||
350 | test_expect_success 'merge-msg -F in subdirectory' ' | |
9a94dba0 JH |
351 | test_unconfig merge.log && |
352 | test_config merge.summary yes && | |
4c8d4c14 | 353 | git checkout master && |
6183a6ad | 354 | test_tick && |
4c8d4c14 SB |
355 | git fetch . left right && |
356 | mkdir sub && | |
357 | cp .git/FETCH_HEAD sub/FETCH_HEAD && | |
358 | ( | |
359 | cd sub && | |
360 | git fmt-merge-msg -F FETCH_HEAD >../actual | |
361 | ) && | |
362 | test_cmp expected actual | |
363 | ' | |
364 | ||
419fe5bc | 365 | test_expect_success 'merge-msg with nothing to merge' ' |
9a94dba0 JH |
366 | test_unconfig merge.log && |
367 | test_config merge.summary yes && | |
419fe5bc | 368 | |
d834c96a JN |
369 | >empty && |
370 | ||
419fe5bc SB |
371 | ( |
372 | cd remote && | |
373 | git checkout -b unrelated && | |
6183a6ad | 374 | test_tick && |
419fe5bc SB |
375 | git fetch origin && |
376 | git fmt-merge-msg <.git/FETCH_HEAD >../actual | |
377 | ) && | |
378 | ||
d834c96a | 379 | test_cmp empty actual |
419fe5bc SB |
380 | ' |
381 | ||
6d6f6e68 | 382 | test_expect_success 'merge-msg tag' ' |
d834c96a JN |
383 | cat >expected <<-EOF && |
384 | Merge tag ${apos}tag-r3${apos} | |
385 | ||
386 | * tag ${apos}tag-r3${apos}: | |
387 | Right #3 | |
388 | Common #2 | |
389 | Common #1 | |
390 | EOF | |
6d6f6e68 | 391 | |
9a94dba0 JH |
392 | test_unconfig merge.log && |
393 | test_config merge.summary yes && | |
6d6f6e68 SB |
394 | |
395 | git checkout master && | |
396 | test_tick && | |
397 | git fetch . tag tag-r3 && | |
398 | ||
399 | git fmt-merge-msg <.git/FETCH_HEAD >actual && | |
400 | test_cmp expected actual | |
401 | ' | |
402 | ||
6d6f6e68 | 403 | test_expect_success 'merge-msg two tags' ' |
d834c96a JN |
404 | cat >expected <<-EOF && |
405 | Merge tags ${apos}tag-r3${apos} and ${apos}tag-l5${apos} | |
406 | ||
407 | * tag ${apos}tag-r3${apos}: | |
408 | Right #3 | |
409 | Common #2 | |
410 | Common #1 | |
411 | ||
9830a9ca JH |
412 | # By Another Author (3) and A U Thor (2) |
413 | # Via Another Committer | |
d834c96a JN |
414 | * tag ${apos}tag-l5${apos}: |
415 | Left #5 | |
416 | Left #4 | |
417 | Left #3 | |
418 | Common #2 | |
419 | Common #1 | |
420 | EOF | |
421 | ||
9a94dba0 JH |
422 | test_unconfig merge.log && |
423 | test_config merge.summary yes && | |
6d6f6e68 SB |
424 | |
425 | git checkout master && | |
426 | test_tick && | |
427 | git fetch . tag tag-r3 tag tag-l5 && | |
428 | ||
429 | git fmt-merge-msg <.git/FETCH_HEAD >actual && | |
430 | test_cmp expected actual | |
431 | ' | |
432 | ||
6d6f6e68 | 433 | test_expect_success 'merge-msg tag and branch' ' |
d834c96a JN |
434 | cat >expected <<-EOF && |
435 | Merge branch ${apos}left${apos}, tag ${apos}tag-r3${apos} | |
436 | ||
437 | * tag ${apos}tag-r3${apos}: | |
438 | Right #3 | |
439 | Common #2 | |
440 | Common #1 | |
441 | ||
9830a9ca JH |
442 | # By Another Author (3) and A U Thor (2) |
443 | # Via Another Committer | |
d834c96a JN |
444 | * left: |
445 | Left #5 | |
446 | Left #4 | |
447 | Left #3 | |
448 | Common #2 | |
449 | Common #1 | |
450 | EOF | |
451 | ||
9a94dba0 JH |
452 | test_unconfig merge.log && |
453 | test_config merge.summary yes && | |
6d6f6e68 SB |
454 | |
455 | git checkout master && | |
456 | test_tick && | |
457 | git fetch . tag tag-r3 left && | |
458 | ||
459 | git fmt-merge-msg <.git/FETCH_HEAD >actual && | |
460 | test_cmp expected actual | |
461 | ' | |
462 | ||
6d6f6e68 | 463 | test_expect_success 'merge-msg lots of commits' ' |
d834c96a JN |
464 | { |
465 | cat <<-EOF && | |
466 | Merge branch ${apos}long${apos} | |
467 | ||
468 | * long: (35 commits) | |
469 | EOF | |
470 | ||
471 | i=29 && | |
472 | while test $i -gt 9 | |
473 | do | |
474 | echo " $i" && | |
475 | i=$(($i-1)) | |
476 | done && | |
477 | echo " ..." | |
478 | } >expected && | |
6d6f6e68 | 479 | |
9a94dba0 JH |
480 | test_config merge.summary yes && |
481 | ||
6d6f6e68 SB |
482 | git checkout master && |
483 | test_tick && | |
484 | git fetch . long && | |
485 | ||
6d6f6e68 SB |
486 | git fmt-merge-msg <.git/FETCH_HEAD >actual && |
487 | test_cmp expected actual | |
488 | ' | |
489 | ||
a38d3d76 JH |
490 | test_expect_success 'merge-msg with "merging" an annotated tag' ' |
491 | test_config merge.log true && | |
492 | ||
493 | git checkout master^0 && | |
494 | git commit --allow-empty -m "One step ahead" && | |
495 | git tag -a -m "An annotated one" annote HEAD && | |
496 | ||
497 | git checkout master && | |
498 | git fetch . annote && | |
499 | ||
500 | git fmt-merge-msg <.git/FETCH_HEAD >actual && | |
501 | { | |
502 | cat <<-\EOF | |
503 | Merge tag '\''annote'\'' | |
504 | ||
505 | An annotated one | |
506 | ||
507 | * tag '\''annote'\'': | |
508 | One step ahead | |
509 | EOF | |
510 | } >expected && | |
511 | test_cmp expected actual && | |
512 | ||
513 | test_when_finished "git reset --hard" && | |
514 | annote=$(git rev-parse annote) && | |
515 | git merge --no-commit $annote && | |
516 | { | |
517 | cat <<-EOF | |
518 | Merge tag '\''$annote'\'' | |
519 | ||
520 | An annotated one | |
521 | ||
522 | * tag '\''$annote'\'': | |
523 | One step ahead | |
524 | EOF | |
525 | } >expected && | |
526 | test_cmp expected .git/MERGE_MSG | |
527 | ' | |
528 | ||
30a95f30 | 529 | test_done |