1#!/bin/sh
2
3test_description='rebase should handle arbitrary git message'
4
5. ./test-lib.sh
6
7cat >F <<\EOF
8This is an example of a commit log message
9that does not conform to git commit convention.
10
11It has two paragraphs, but its first paragraph is not friendly
12to oneline summary format.
13EOF
14
15cat >G <<\EOF
16commit log message containing a diff
17EOF
18
19
20test_expect_success setup '
21
22 >file1 &&
23 >file2 &&
24 git add file1 file2 &&
25 test_tick &&
26 git commit -m "Initial commit" &&
27 git branch diff-in-message &&
28
29 git checkout -b multi-line-subject &&
30 cat F >file2 &&
31 git add file2 &&
32 test_tick &&
33 git commit -F F &&
34
35 git cat-file commit HEAD | sed -e "1,/^\$/d" >F0 &&
36
37 git checkout diff-in-message &&
38 echo "commit log message containing a diff" >G &&
39 echo "" >>G &&
40 cat G >file2 &&
41 git add file2 &&
42 git diff --cached >>G &&
43 test_tick &&
44 git commit -F G &&
45
46 git cat-file commit HEAD | sed -e "1,/^\$/d" >G0 &&
47
48 git checkout master &&
49
50 echo One >file1 &&
51 test_tick &&
52 git add file1 &&
53 git commit -m "Second commit"
54'
55
56test_expect_success 'rebase commit with multi-line subject' '
57
58 git rebase master multi-line-subject &&
59 git cat-file commit HEAD | sed -e "1,/^\$/d" >F1 &&
60
61 test_cmp F0 F1 &&
62 test_cmp F F0
63'
64
65test_expect_success 'rebase commit with diff in message' '
66 git rebase master diff-in-message &&
67 git cat-file commit HEAD | sed -e "1,/^$/d" >G1 &&
68 test_cmp G0 G1 &&
69 test_cmp G G0
70'
71
72test_done