mirror of
https://github.com/git/git.git
synced 2024-12-15 21:04:10 +08:00
d540b70c85
This change allows git-merge messages to be cleaned up with the commit.cleanup configuration or --cleanup option, just like how git-commit does it. We also give git-pull the option of --cleanup so that it can also take advantage of this change. Finally, add testing to ensure that messages are properly cleaned up. Note that some newlines that were added to the commit message were removed so that if a file were read via -F, it would be copied faithfully. Helped-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Denton Liu <liu.denton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
116 lines
2.6 KiB
Bash
Executable File
116 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='git merge
|
|
|
|
Testing merge when using a custom message for the merge commit.'
|
|
|
|
. ./test-lib.sh
|
|
|
|
create_merge_msgs() {
|
|
echo >exp.subject "custom message"
|
|
|
|
cp exp.subject exp.log &&
|
|
echo >>exp.log "" &&
|
|
echo >>exp.log "* tag 'c2':" &&
|
|
echo >>exp.log " c2"
|
|
}
|
|
|
|
test_expect_success 'setup' '
|
|
echo c0 >c0.c &&
|
|
git add c0.c &&
|
|
git commit -m c0 &&
|
|
git tag c0 &&
|
|
echo c1 >c1.c &&
|
|
git add c1.c &&
|
|
git commit -m c1 &&
|
|
git tag c1 &&
|
|
git reset --hard c0 &&
|
|
echo c2 >c2.c &&
|
|
git add c2.c &&
|
|
git commit -m c2 &&
|
|
git tag c2 &&
|
|
create_merge_msgs
|
|
'
|
|
|
|
|
|
test_expect_success 'merge c2 with a custom message' '
|
|
git reset --hard c1 &&
|
|
git merge -m "$(cat exp.subject)" c2 &&
|
|
git cat-file commit HEAD >raw &&
|
|
sed -e "1,/^$/d" raw >actual &&
|
|
test_cmp exp.subject actual
|
|
'
|
|
|
|
test_expect_success 'merge --log appends to custom message' '
|
|
git reset --hard c1 &&
|
|
git merge --log -m "$(cat exp.subject)" c2 &&
|
|
git cat-file commit HEAD >raw &&
|
|
sed -e "1,/^$/d" raw >actual &&
|
|
test_cmp exp.log actual
|
|
'
|
|
|
|
mesg_with_comment_and_newlines='
|
|
# text
|
|
|
|
'
|
|
|
|
test_expect_success 'prepare file with comment line and trailing newlines' '
|
|
printf "%s" "$mesg_with_comment_and_newlines" >expect
|
|
'
|
|
|
|
test_expect_success 'cleanup commit messages (verbatim option)' '
|
|
git reset --hard c1 &&
|
|
git merge --cleanup=verbatim -F expect c2 &&
|
|
git cat-file commit HEAD >raw &&
|
|
sed -e "1,/^$/d" raw >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'cleanup commit messages (whitespace option)' '
|
|
git reset --hard c1 &&
|
|
test_write_lines "" "# text" "" >text &&
|
|
echo "# text" >expect &&
|
|
git merge --cleanup=whitespace -F text c2 &&
|
|
git cat-file commit HEAD >raw &&
|
|
sed -e "1,/^$/d" raw >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'cleanup merge messages (scissors option)' '
|
|
git reset --hard c1 &&
|
|
cat >text <<-\EOF &&
|
|
|
|
# to be kept
|
|
|
|
# ------------------------ >8 ------------------------
|
|
# to be kept, too
|
|
# ------------------------ >8 ------------------------
|
|
to be removed
|
|
# ------------------------ >8 ------------------------
|
|
to be removed, too
|
|
EOF
|
|
|
|
cat >expect <<-\EOF &&
|
|
# to be kept
|
|
|
|
# ------------------------ >8 ------------------------
|
|
# to be kept, too
|
|
EOF
|
|
git merge --cleanup=scissors -e -F text c2 &&
|
|
git cat-file commit HEAD >raw &&
|
|
sed -e "1,/^$/d" raw >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'cleanup commit messages (strip option)' '
|
|
git reset --hard c1 &&
|
|
test_write_lines "" "# text" "sample" "" >text &&
|
|
echo sample >expect &&
|
|
git merge --cleanup=strip -F text c2 &&
|
|
git cat-file commit HEAD >raw &&
|
|
sed -e "1,/^$/d" raw >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_done
|