git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Hu Jialun <hujialun@comp.nus.edu.sg>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] commit: remove irrelavent prompt on `--allow-empty-message`
Date: Tue, 06 Jul 2021 08:44:19 -0700	[thread overview]
Message-ID: <xmqqlf6jla5o.fsf@gitster.g> (raw)
In-Reply-To: <20210706022438.580374-1-hujialun@comp.nus.edu.sg> (Hu Jialun's message of "Tue, 6 Jul 2021 10:24:38 +0800")

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.


> 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

  reply	other threads:[~2021-07-06 15:44 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-06  2:24 [PATCH] commit: remove irrelavent prompt on `--allow-empty-message` Hu Jialun
2021-07-06 15:44 ` Junio C Hamano [this message]
2021-07-07  4:37   ` Felipe Contreras
2021-07-07 10:43   ` Hu Jialun
2021-07-07 16:23 ` Hu Jialun
2021-07-07 16:23   ` [PATCH v2 1/2] commit: reorganise duplicate commit prompt strings Hu Jialun
2021-07-07 16:57     ` Đoàn Trần Công Danh
2021-07-07 17:44       ` Junio C Hamano
2021-07-07 16:23   ` [PATCH v2 2/2] commit: remove irrelavent prompt on `--allow-empty-message` Hu Jialun
2021-07-07 17:42     ` Felipe Contreras
2021-07-08 15:19   ` [PATCH] " Hu Jialun
2021-07-08 16:05     ` Đoàn Trần Công Danh
2021-07-08 18:26       ` Junio C Hamano
2021-07-09 18:07   ` [PATCH v3 1/2] commit: reorganise commit hint strings Hu Jialun
2021-07-09 19:14     ` Junio C Hamano
2021-07-09 18:07   ` [PATCH v3 2/2] commit: remove irrelavent prompt on `--allow-empty-message` Hu Jialun
2021-07-09 19:14     ` Junio C Hamano
2021-07-10 17:26       ` Hu Jialun
2021-07-22 18:33       ` Hu Jialun
2021-07-22 21:18         ` 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=xmqqlf6jla5o.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=hujialun@comp.nus.edu.sg \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).