All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Đoàn Trần Công Danh" <congdanhqx@gmail.com>
To: Hu Jialun <hujialun@comp.nus.edu.sg>
Cc: git@vger.kernel.org, gitster@pobox.com, felipe.contreras@gmail.com
Subject: Re: [PATCH] commit: remove irrelavent prompt on `--allow-empty-message`
Date: Thu, 8 Jul 2021 23:05:57 +0700	[thread overview]
Message-ID: <YOciZUlWnF5ur5ec@danh.dev> (raw)
In-Reply-To: <20210708151911.2524122-1-hujialun@comp.nus.edu.sg>

On 2021-07-08 23:19:11+0800, Hu Jialun <hujialun@comp.nus.edu.sg> wrote:
> Junio C Hamano wrote:
> > char *hint_cleanup_all =
> > _("Please enter the ... , and an empty message aborts the commit.\n");
> > char *hint_cleanup_space =
> > _("Please enter the ... if you want to.\n"
> >       "An empty message aborts the commit.\n");
> >
> > if (allow_empty_message) {
> >         hint_cleanup_all = _("...");
> >         hint_cleanup_space = _("...");
> > }
> >
> > ... the if/elseif cascade in which calls to status_printf() are made
> > ... using these variables
> 
> Would it be better this way or just using the ternary operator in-line
> instead? If the latter, should it still be separated into another
> variable or just embedded in the status_printf call? Using the ternary
> operator does require to separate checks of allow_empty_message, but
> might as well save us an `if` construct to reassign the variable.
> 
> In other words, which of the following 3 is the most acceptable?
> 
> 1. As Junio suggested, quoted above.

I think this approach is the most expensive one, _() needs to query
the gettext infrastructure, which is usually costly.
However, I think that cost doesn't matter much since we're about to
open an editor soon.

> 2.
> status_printf(s, GIT_COLOR_NORMAL, allow_empty_message ?
>                                    _("...") :
> 				   _("...."), comment_line_char);

install_branch_config() uses this style.

> 
> 3.
> const char *hint_foo = allow_empty_message ?
>                        _("...") :
> 		       _("....");

builtin/remote.c:show_local_info_item() writes:

	const char *msg;
	if (condition)
		msg = _("some message");
	else
		msg = _("other message");

So, I guess it's fine either way. And people will need to see the
patch to see which one is better.

> ......
> status_printf(s, GIT_COLOR_NORMAL, hint_foo, comment_line_char);
> 
> --------------------------------------------------------------------
> 
> Felipe Contreras wrote:
> > In git the style is to avoid braces if the content of the condition is a
> > single line.
> 
> Đoàn Trần Công Danh wrote:
> > In Git project, it's enforced to have -Wdeclaration-after-statement,
> > IOW, move all declaration before statement.
> 
> Noted with thanks!
> 
> > After changing those texts, the tests should be updated, too.
> > It's a customary service for the next developer, who needs to bisect
> > this project to have all test-cases pass on each changes.
> > 
> > With this change, t7500.50 and t7502.37 runs into failures.
> > Please fix them here, instead of next change.
> 
> I did change test cases accordingly in the second patch (excerpt below), and
> both tests did pass afterwards. Was there something wrong with it?

Yes, when apply both 2 patches, the test passed, however, the test
doesn't pass with only 1/2 applied. Let's imagine in a near future,
some developers need to bisect some problems with Git with automation
scripts, and git-bisect stops at 1/2, since the tests report failure,
"git bisect run" will mark this change as "bad commit", thus render
git-bisect hard to use. We should make sure all tests pass on all
commit.

> And some perhaps rather noob questions below, as an (overly) curious
> newcomer,
> 
> - Why is the "lego" style breakdown of translation strings unrecommended?
>   I suppose it might be in consideration of possibly different linguistic
>   sequences across languages but I'm not so sure.

Let's imagine an artificial language which have 2 words "linos" and
"linas" which is both translated to English as "lines", translators
need full context to decide which word should be chosen. Things maybe
complicated with language with gender, word-cases, etc...

There're some problems reported on and off this list [1]

> - What is the rationale behind prohibiting braces around single line
>   constructs? It seems somewhat error-prone since somebody else could
>   later be adding statements into the body without putting the curly
>   braces.

Documentation/CodingGuidelines said so ;)
I don't think somebody adding random statements is a valid concern for
brace, I think it's expected to analyse the code context before doing
real-work on project. Furthermore, -Wmisleading-indentation is your
friends.


1: https://lore.kernel.org/git/20210509215250.33215-1-alexhenrie24@gmail.com/

-- 
Danh

  reply	other threads:[~2021-07-08 16:06 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
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 [this message]
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=YOciZUlWnF5ur5ec@danh.dev \
    --to=congdanhqx@gmail.com \
    --cc=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --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 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.