#!/bin/sh test_description='verbose commit template' . ./test-lib.sh cat >check-for-diff <<EOF #!$SHELL_PATH exec grep '^diff --git' "\$1" EOF chmod +x check-for-diff test_set_editor "$PWD/check-for-diff" cat >message <<'EOF' subject body EOF test_expect_success 'setup' ' echo content >file && git add file && git commit -F message ' test_expect_success 'initial commit shows verbose diff' ' git commit --amend -v ' test_expect_success 'second commit' ' echo content modified >file && git add file && git commit -F message ' check_message() { git log -1 --pretty=format:%s%n%n%b >actual && test_cmp "$1" actual } test_expect_success 'verbose diff is stripped out' ' git commit --amend -v && check_message message ' test_expect_success 'verbose diff is stripped out (mnemonicprefix)' ' git config diff.mnemonicprefix true && git commit --amend -v && check_message message ' cat >diff <<'EOF' This is an example commit message that contains a diff. diff --git c/file i/file new file mode 100644 index 0000000..f95c11d --- /dev/null +++ i/file @@ -0,0 +1 @@ +this is some content EOF test_expect_success 'diff in message is retained without -v' ' git commit --amend -F diff && check_message diff ' test_expect_failure 'diff in message is retained with -v' ' git commit --amend -F diff -v && check_message diff ' test_done