On Wed, Apr 06, 2016 at 06:15:03PM +0100, Adam Dinwoodie wrote: > `git commit --amend -m ''` seems to be an unambiguous request to blank a > commit message, but it actually leaves the commit message as-is. That's > the case regardless of whether `--allow-empty-message` is specified, and > doesn't so much as drop a non-zero return code. > > Add failing tests to show this behaviour. Hmm. Is it just that we check "message.len", which cannot tell the difference between "-m was not given" and "-m was given the empty string"? IOW, would this fix it? diff --git a/builtin/commit.c b/builtin/commit.c index 109742e..3cdc44e 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -695,7 +695,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, "-")) { It passes the test suite and your two new tests, but I didn't look too deeply to see if there are other fallouts. I don't think anybody should be using it to counteract a previous "-m" or anything like that; we have "--no-message" for that. -Peff PS Is there a previous thread? I see a couple people cc'd, including me, but I don't remember a previous discussion. Did I just forget it? -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html