Allow edit of empty message with commit --amend
"git commit --amend" used on a commit with an empty message fails unless -m is given, whether or not --allow-empty-message is specified. Allow it to proceed to the editor with an empty commit message. Unless --allow-empty-message is in force, it will still abort later if an empty message is saved from the editor (this check was already necessary to prevent a non-empty commit message being edited to an empty one). Add a test for --amend --edit of an empty commit message which fails without this fix, as it's a rare case that won't get frequently tested otherwise. Signed-off-by: Chris Webb <chris@arachsys.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d0f1ea6003
commit
d9a9357572
@ -690,7 +690,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
|
||||
hook_arg1 = "message";
|
||||
} else if (use_message) {
|
||||
buffer = strstr(use_message_buffer, "\n\n");
|
||||
if (!buffer || buffer[2] == '\0')
|
||||
if (!use_editor && (!buffer || buffer[2] == '\0'))
|
||||
die(_("commit has empty message"));
|
||||
strbuf_add(&sb, buffer + 2, strlen(buffer + 2));
|
||||
hook_arg1 = "commit";
|
||||
|
@ -124,6 +124,21 @@ test_expect_success '--amend --edit' '
|
||||
test_cmp expect msg
|
||||
'
|
||||
|
||||
test_expect_success '--amend --edit of empty message' '
|
||||
cat >replace <<-\EOF &&
|
||||
#!/bin/sh
|
||||
echo "amended" >"$1"
|
||||
EOF
|
||||
chmod 755 replace &&
|
||||
git commit --allow-empty --allow-empty-message -m "" &&
|
||||
echo more bongo >file &&
|
||||
git add file &&
|
||||
EDITOR=./replace git commit --edit --amend &&
|
||||
git diff-tree -s --format=%s HEAD >msg &&
|
||||
./replace expect &&
|
||||
test_cmp expect msg
|
||||
'
|
||||
|
||||
test_expect_success '-m --edit' '
|
||||
echo amended >expect &&
|
||||
git commit --allow-empty -m buffer &&
|
||||
|
Loading…
Reference in New Issue
Block a user