Skip to content

Commit 0709261

Browse files
committed
Merge branch 'ad/commit-have-m-option'
"git commit" misbehaved in a few minor ways when an empty message is given via -m '', all of which has been corrected. * ad/commit-have-m-option: commit: do not ignore an empty message given by -m '' commit: --amend -m '' silently fails to wipe message
2 parents 56b5a91 + 27014cb commit 0709261

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

builtin/commit.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
695695
}
696696
}
697697

698-
if (message.len) {
698+
if (have_option_m) {
699699
strbuf_addbuf(&sb, &message);
700700
hook_arg1 = "message";
701701
} else if (logfile && !strcmp(logfile, "-")) {
@@ -1172,9 +1172,9 @@ static int parse_and_validate_options(int argc, const char *argv[],
11721172
f++;
11731173
if (f > 1)
11741174
die(_("Only one of -c/-C/-F/--fixup can be used."));
1175-
if (message.len && f > 0)
1175+
if (have_option_m && f > 0)
11761176
die((_("Option -m cannot be combined with -c/-C/-F/--fixup.")));
1177-
if (f || message.len)
1177+
if (f || have_option_m)
11781178
template_file = NULL;
11791179
if (edit_message)
11801180
use_message = edit_message;

t/t7501-commit.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,26 @@ test_expect_success '--amend --edit of empty message' '
200200
test_cmp expect msg
201201
'
202202

203+
test_expect_success '--amend to set message to empty' '
204+
echo bata >file &&
205+
git add file &&
206+
git commit -m "unamended" &&
207+
git commit --amend --allow-empty-message -m "" &&
208+
git diff-tree -s --format=%s HEAD >msg &&
209+
echo "" >expect &&
210+
test_cmp expect msg
211+
'
212+
213+
test_expect_success '--amend to set empty message needs --allow-empty-message' '
214+
echo conga >file &&
215+
git add file &&
216+
git commit -m "unamended" &&
217+
test_must_fail git commit --amend -m "" &&
218+
git diff-tree -s --format=%s HEAD >msg &&
219+
echo "unamended" >expect &&
220+
test_cmp expect msg
221+
'
222+
203223
test_expect_success '-m --edit' '
204224
echo amended >expect &&
205225
git commit --allow-empty -m buffer &&

0 commit comments

Comments
 (0)