From: Chris Webb <chris@arachsys.com>
To: git@vger.kernel.org
Subject: Using git commit --amend on a commit with an empty message
Date: Mon, 9 Jul 2012 15:24:38 +0100 [thread overview]
Message-ID: <20120709142437.GQ13885@arachsys.com> (raw)
Github gists can be cloned as normal git repositories, but the commits made
through the web interface appear with an empty commit message. Running
git commit --amend against them exposes a slightly odd behaviour of git,
which I can also demonstrate as follows:
$ git init foo && cd foo
$ touch one && git add one
$ git commit -m '' --allow-empty-message
[master (root-commit) 535cb36]
0 files changed
create mode 100644 one
When I try to correct this commit message in an editor, it refuses to
proceed, objecting to the existing empty commit message:
$ git commit --amend
fatal: commit has empty message
Shouldn't this drop me into the editor and fail only if the resulting
message on exit is empty? (For comparison, git commit --amend -m 'oops' will
work fine; it's apparently only the edit case which doesn't.)
In fact, we even fail to start the editor if --allow-empty-message is
explicitly provided:
$ git commit --amend --allow-empty-message
fatal: commit has empty message
Assuming this isn't intentional for some reason I don't understand, I think
this is the correct tiny fix? make test succeeds fine both before and after.
-- >8 --
Subject: [PATCH] Allow edit of empty message with commit --amend
If git commit --amend is used on a commit with an empty message, it fails
unless -m is given, whether or not --allow-empty-message is specified.
Instead, 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. (That check was already present
and necessary to prevent a non-empty commit message being edited to an
empty one.)
Signed-off-by: Chris Webb <chris@arachsys.com>
---
builtin/commit.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/builtin/commit.c b/builtin/commit.c
index f43eaaf..6515da2 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -640,7 +640,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";
--
1.7.10
next reply other threads:[~2012-07-09 14:24 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-09 14:24 Chris Webb [this message]
2012-07-09 17:25 ` Using git commit --amend on a commit with an empty message Junio C Hamano
2012-07-09 18:17 ` Chris Webb
2012-07-09 18:53 ` [PATCH v2] Allow edit of empty message with commit --amend Chris Webb
2012-07-09 19:43 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120709142437.GQ13885@arachsys.com \
--to=chris@arachsys.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.