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

Re: [PATCH] commit: remove irrelavent prompt on `--allow-empty-message`

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 6, 2021, 15:44 UTC
Message-ID
<xmqqlf6jla5o.fsf@gitster.g>
In-Reply-To
<20210706022438.580374-1-hujialun@comp.nus.edu.sg>
Hu Jialun <hujialun@comp.nus.edu.sg> writes:
> Currently, COMMIT_EDITMSG contains "...and an empty message aborts the
> commit", regardless of whether the --allow-empty-message option is
> specified or not. This is deemed confusing and unintended.

I have to wonder what reason a user have to use that option, other than wanting to record a commit without any message. In other words, wouldn't it be a bug for this command

    $ git commit --allow-empty-message

to open an editor to allow editing the message, instead of just committing with an empty message? If we fix that, then the user wouldn't have to see "edit this file in your editor. making it empty will abort the commit" message in the first place, so all the message changes do not have to be done.

If we still want to open an editor when --allow-empty-message is given, then I would say the "making it empty will abort" part of the message is *not* "confusing and unintended". It is a confused and wrong message.

The resulting code looks correct, even though it is somewhat too repetitious. The existing code may want to see a preliminary clean-up patch (PATCH 1/2) to move these messages to a set of variables, so that the fix (PATCH 2/2) can swap the contents of these variables based on the value of allow_empty_message, if it makes the resulting code easier to follow (I haven't tried it, so please tell me if that improved the code or not after trying to do so ;-)).

As to the proposed log message, let's not start it with "Currently", and spell out the approach to fix the issue explicitly, perhaps like.

    Even when the `--allow-empty-message` option is given, "git
    commit" offers an interactive editor session with prefilled
    message that says the commit will be aborted if the buffer is
    emptied, which is wrong.
    Remove the "an empty message aborts" part from the message when
    the option is given to fix it.
Thanks.
Show 59 quoted lines
> Signed-off-by: Hu Jialun <hujialun@comp.nus.edu.sg>
> ---
>  builtin/commit.c | 41 ++++++++++++++++++++++++++++-------------
>  1 file changed, 28 insertions(+), 13 deletions(-)
>
> diff --git a/builtin/commit.c b/builtin/commit.c
> index 190d215d43..61e3382db9 100644
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@ -910,21 +910,36 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
>  		}
>  
>  		fprintf(s->fp, "\n");
> -		if (cleanup_mode == COMMIT_MSG_CLEANUP_ALL)
> -			status_printf(s, GIT_COLOR_NORMAL,
> -				_("Please enter the commit message for your changes."
> -				  " Lines starting\nwith '%c' will be ignored, and an empty"
> -				  " message aborts the commit.\n"), comment_line_char);
> -		else if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS) {
> +		if (cleanup_mode == COMMIT_MSG_CLEANUP_ALL) {
> +			if (allow_empty_message) {
> +				status_printf(s, GIT_COLOR_NORMAL,
> +					_("Please enter the commit message for your changes."
> +					" Lines starting\nwith '%c' will be ignored.\n"), comment_line_char);
> +			} else {
> +				status_printf(s, GIT_COLOR_NORMAL,
> +					_("Please enter the commit message for your changes."
> +					" Lines starting\nwith '%c' will be ignored, and an empty"
> +					" message aborts the commit.\n"), comment_line_char);
> +			}
> +		} else if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS) {
>  			if (whence == FROM_COMMIT && !merge_contains_scissors)
>  				wt_status_add_cut_line(s->fp);
> -		} else /* COMMIT_MSG_CLEANUP_SPACE, that is. */
> -			status_printf(s, GIT_COLOR_NORMAL,
> -				_("Please enter the commit message for your changes."
> -				  " Lines starting\n"
> -				  "with '%c' will be kept; you may remove them"
> -				  " yourself if you want to.\n"
> -				  "An empty message aborts the commit.\n"), comment_line_char);
> +		} else { /* COMMIT_MSG_CLEANUP_SPACE, that is. */
> +			if (allow_empty_message) {
> +				status_printf(s, GIT_COLOR_NORMAL,
> +					_("Please enter the commit message for your changes."
> +					" Lines starting\n"
> +					"with '%c' will be kept; you may remove them"
> +					" yourself if you want to.\n"), comment_line_char);
> +			} else {
> +				status_printf(s, GIT_COLOR_NORMAL,
> +					_("Please enter the commit message for your changes."
> +					" Lines starting\n"
> +					"with '%c' will be kept; you may remove them"
> +					" yourself if you want to.\n"
> +					"An empty message aborts the commit.\n"), comment_line_char);
> +			}
> +		}
>  
>  		/*
>  		 * These should never fail because they come from our own
Previous: Hu JialunNext: Felipe Contreras
Message 2 of 20 in “commit: remove irrelavent prompt on `--allow-empty-message`”
  1. commit: remove irrelavent prompt on `--allow-empty-message`Hu Jialun, Jul 6, 2021
  2. Junio C HamanoJul 6, 2021
  3. Felipe ContrerasJul 7, 2021
  4. Hu JialunJul 7, 2021
  5. Hu JialunJul 7, 2021
  6. 1/2 commit: reorganise duplicate commit prompt stringsHu Jialun, Jul 7, 2021
  7. Đoàn Trần Công DanhJul 7, 2021
  8. Junio C HamanoJul 7, 2021
  9. 2/2 commit: remove irrelavent prompt on `--allow-empty-message`Hu Jialun, Jul 7, 2021
  10. Felipe ContrerasJul 7, 2021
  11. Hu JialunJul 8, 2021
  12. Đoàn Trần Công DanhJul 8, 2021
  13. Junio C HamanoJul 8, 2021
  14. 1/2 commit: reorganise commit hint stringsHu Jialun, Jul 9, 2021
  15. Junio C HamanoJul 9, 2021
  16. 2/2 commit: remove irrelavent prompt on `--allow-empty-message`Hu Jialun, Jul 9, 2021
  17. Junio C HamanoJul 9, 2021
  18. Hu JialunJul 10, 2021
  19. Hu JialunJul 22, 2021
  20. Junio C HamanoJul 22, 2021

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.