#!/bin/sh test_description='rebase should handle arbitrary git message' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-rebase.sh cat >F <<\EOF This is an example of a commit log message that does not conform to git commit convention. It has two paragraphs, but its first paragraph is not friendly to oneline summary format. EOF cat >G <<\EOF commit log message containing a diff EOF test_expect_success setup ' >file1 && >file2 && git add file1 file2 && test_tick && git commit -m "Initial commit" && git branch diff-in-message && git branch empty-message-merge && git checkout -b multi-line-subject && cat F >file2 && git add file2 && test_tick && git commit -F F && git cat-file commit HEAD | sed -e "1,/^\$/d" >F0 && git checkout diff-in-message && echo "commit log message containing a diff" >G && echo "" >>G && cat G >file2 && git add file2 && git diff --cached >>G && test_tick && git commit -F G && git cat-file commit HEAD | sed -e "1,/^\$/d" >G0 && git checkout empty-message-merge && echo file3 >file3 && git add file3 && git commit --allow-empty-message -m "" && git checkout master && echo One >file1 && test_tick && git add file1 && git commit -m "Second commit" ' test_expect_success 'rebase commit with multi-line subject' ' git rebase master multi-line-subject && git cat-file commit HEAD | sed -e "1,/^\$/d" >F1 && test_cmp F0 F1 && test_cmp F F0 ' test_expect_success 'rebase commit with diff in message' ' git rebase master diff-in-message && git cat-file commit HEAD | sed -e "1,/^$/d" >G1 && test_cmp G0 G1 && test_cmp G G0 ' test_expect_success 'rebase -m commit with empty message' ' git rebase -m master empty-message-merge ' test_expect_success 'rebase -i commit with empty message' ' git checkout diff-in-message && set_fake_editor && test_must_fail env FAKE_COMMIT_MESSAGE=" " FAKE_LINES="reword 1" \ git rebase -i HEAD^ ' test_done