diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-05-02 14:24:09 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-05-02 14:24:09 -0700 |
commit | 12c5cd774e26acfea66e19e8fba53faf9507322f (patch) | |
tree | a15dbe4943d43ecebf72fd791b1023c1e1576dac | |
parent | Merge branch 'sb/submodule-helper-clone-regression-fix' into maint (diff) | |
parent | commit: do not ignore an empty message given by -m '' (diff) | |
download | tgif-12c5cd774e26acfea66e19e8fba53faf9507322f.tar.xz |
Merge branch 'ad/commit-have-m-option' into maint
"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
-rw-r--r-- | builtin/commit.c | 6 | ||||
-rwxr-xr-x | t/t7501-commit.sh | 20 |
2 files changed, 23 insertions, 3 deletions
diff --git a/builtin/commit.c b/builtin/commit.c index c733ec98b7..e13303787a 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -694,7 +694,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix, } } - if (message.len) { + if (have_option_m) { strbuf_addbuf(&sb, &message); hook_arg1 = "message"; } else if (logfile && !strcmp(logfile, "-")) { @@ -1171,9 +1171,9 @@ static int parse_and_validate_options(int argc, const char *argv[], f++; if (f > 1) die(_("Only one of -c/-C/-F/--fixup can be used.")); - if (message.len && f > 0) + if (have_option_m && f > 0) die((_("Option -m cannot be combined with -c/-C/-F/--fixup."))); - if (f || message.len) + if (f || have_option_m) template_file = NULL; if (edit_message) use_message = edit_message; diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh index 63e04277f9..900f7de05a 100755 --- a/t/t7501-commit.sh +++ b/t/t7501-commit.sh @@ -200,6 +200,26 @@ test_expect_success '--amend --edit of empty message' ' test_cmp expect msg ' +test_expect_success '--amend to set message to empty' ' + echo bata >file && + git add file && + git commit -m "unamended" && + git commit --amend --allow-empty-message -m "" && + git diff-tree -s --format=%s HEAD >msg && + echo "" >expect && + test_cmp expect msg +' + +test_expect_success '--amend to set empty message needs --allow-empty-message' ' + echo conga >file && + git add file && + git commit -m "unamended" && + test_must_fail git commit --amend -m "" && + git diff-tree -s --format=%s HEAD >msg && + echo "unamended" >expect && + test_cmp expect msg +' + test_expect_success '-m --edit' ' echo amended >expect && git commit --allow-empty -m buffer && |