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";