git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Using git commit --amend on a commit with an empty message

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 9, 2012, 17:25 UTC
Message-ID
<7v7guclucl.fsf@alter.siamese.dyndns.org>
In-Reply-To
<20120709142437.GQ13885@arachsys.com>
Chris Webb <chris@arachsys.com> writes:
Show 9 quoted lines
> In fact, we even fail to start the editor if --allow-empty-message is
> explicitly provided:
>
>   $ git commit --allow-empty --allow-empty-message -m ''
>   $ 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.

Yeah, it is a "bug" that exists only because nobody sane uses empty message commits, let alone tries to amend such commits, hence went unnoticed for a long time.

The patch looks sane; if we want to keep this as a feature or a bugfix, we may want to pretect it with a new test, though.

Thanks.
Show 30 quoted lines
> -- >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";
Previous: Chris WebbNext: Chris Webb
Message 2 of 5 in “Using git commit --amend on a commit with an empty message”
  1. Chris WebbJul 9, 2012
  2. Junio C HamanoJul 9, 2012
  3. Chris WebbJul 9, 2012
  4. Allow edit of empty message with commit --amendChris Webb, Jul 9, 2012
  5. Junio C HamanoJul 9, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.