All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "John Cai via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, John Cai <johncai86@gmail.com>,
	Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH] name-rev: deprecate --stdin in favor of --annotate-text
Date: Mon, 27 Dec 2021 11:49:42 -0800	[thread overview]
Message-ID: <xmqqpmphx1yh.fsf@gitster.g> (raw)
In-Reply-To: <pull.1171.git.git.1640492910432.gitgitgadget@gmail.com> (John Cai via GitGitGadget's message of "Sun, 26 Dec 2021 04:28:30 +0000")

"John Cai via GitGitGadget" <gitgitgadget@gmail.com> writes:

As name-rev is Dscho's brainchild, I think it is benefitial to ask input
from him, so I added an address to the CC: list.

> From: John Cai <johncai86@gmail.com>
>
> Introduce a --annotate-text that is functionally equivalent of --stdin.
> --stdin does not behave as --stdin in other subcommands, such as
> pack-objects whereby it takes one argument per line. Since --stdin can
> be a confusing and misleading name, rename it to --annotate-text.
>
> This change adds a warning to --stdin warning that it will be removed in
> the future.

I know I've suggested the name, but 'text' in --annotate-text is a
low value word in an option name where every byte is precious.
"Annotate" is very good to convey what is done to the object of the
verb, but "text" stresses the wrong thing (we do not annotate
binary,o we annotate text) without saying where the text comes from
(i.e.  standard input).  Perhaps "--annotate-stdin" would be a much
better name.

I agree that letting "--stdin" to deviate so much from an emulation
of "xargs git name-rev" was indeed a mistake that caused the
confusion that led to the other thread.  If the mode had a better
name from the day 1, the thread would have been avoided.

What I am not sure about is how much this transition would hurt
existing users and scripts.

> +	For example:
> ++
> +----------
> +$ cat sample.txt
> +
> +An abbreviated revision 2ae0a9cb82 will not be substituted.
> +The full name after substitution is 2ae0a9cb8298185a94e5998086f380a355dd8907,
> +while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad
> +
> +$ git name-rev --annotate-text < sample.txt

Lose SP between the redirection operator '<' and its file 'sample.txt'.

> +
> +An abbreviated revision 2ae0a9cb82 will not be substituted.
> +The full name after substitution is 2ae0a9cb8298185a94e5998086f380a355dd8907
> +(master),
> +while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad
> +
> +$ git name-rev --name-only --annotate-text < sample.txt

Ditto.

> +	if (transform_stdin) {
> +		warning("--stdin is deprecated. Please use --annotate-text instead, "
> +					"which is functionally equivalent.\n"
> +					"This option will be removed in a future release.");
> +		annotate_text = 1;

I guess that is sensible.  To squelch the warning, they can switch
to the new option.

> +	}
> +
> +	if (all + annotate_text + !!argc > 1) {
>  		error("Specify either a list, or --all, not both!");
>  		usage_with_options(name_rev_usage, opts);
>  	}
> -	if (all || transform_stdin)
> +	if (all || annotate_text)
>  		cutoff = 0;
>  
>  	for (; argc; argc--, argv++) {
> @@ -613,7 +622,7 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
>  	for_each_ref(name_ref, &data);
>  	name_tips();
>  
> -	if (transform_stdin) {
> +	if (annotate_text) {
>  		char buffer[2048];
>  
>  		while (!feof(stdin)) {

Not a suggestion to change anything in this patch, but just an
observation.

 - If the mode is useful enough for many users, certainly somebody
   would have rewritten this loop to lift the line-length limit, but
   nobody noticed and complained about this 2k limit for the past 17
   years.  I am not sure if that is an indication that nobody uses
   the option in its current form.

 - A low hanging fruit, if we do not go full strbuf_getline(), at
   least we should narrow the scope of buffer[] array.


  reply	other threads:[~2021-12-27 19:49 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-26  4:28 [PATCH] name-rev: deprecate --stdin in favor of --annotate-text John Cai via GitGitGadget
2021-12-27 19:49 ` Junio C Hamano [this message]
2021-12-28  5:13   ` John Cai
2021-12-31  8:16     ` Junio C Hamano
2022-01-01 22:59   ` Johannes Schindelin
2021-12-29  6:23 ` [PATCH v2 0/2] name-rev: deprecate --stdin in favor of --anotate-text John Cai via GitGitGadget
2021-12-29  6:23   ` [PATCH v2 1/2] name-rev: deprecate --stdin in favor of --annotate-text John Cai via GitGitGadget
2021-12-30 22:36     ` Junio C Hamano
2021-12-29  6:23   ` [PATCH v2 2/2] name-rev.c: use strbuf_getline instead of limited size buffer John Cai via GitGitGadget
2022-01-03 14:47   ` [PATCH v3 0/2] name-rev: deprecate --stdin in favor of --annotate-stdin John Cai via GitGitGadget
2022-01-03 14:47     ` [PATCH v3 1/2] name-rev: deprecate --stdin in favor of --annotate-text John Cai via GitGitGadget
2022-01-04  2:36       ` Junio C Hamano
2022-01-04  3:16       ` Junio C Hamano
2022-01-04 13:25       ` Philip Oakley
2022-01-04 19:00         ` Junio C Hamano
2022-01-04 19:38         ` Eric Sunshine
2022-01-03 14:47     ` [PATCH v3 2/2] name-rev.c: use strbuf_getline instead of limited size buffer John Cai via GitGitGadget
2022-01-04  2:16       ` Junio C Hamano
2022-01-04 14:49     ` [PATCH v4 0/2] name-rev: deprecate --stdin in favor of --annotate-stdin John Cai via GitGitGadget
2022-01-04 14:49       ` [PATCH v4 1/2] " John Cai via GitGitGadget
2022-01-04 22:12         ` Junio C Hamano
2022-01-05 11:15         ` Phillip Wood
2022-01-05 19:47           ` Junio C Hamano
2022-01-05 19:52           ` Junio C Hamano
2022-01-04 14:49       ` [PATCH v4 2/2] name-rev.c: use strbuf_getline instead of limited size buffer John Cai via GitGitGadget
2022-01-04 14:54         ` John Cai
2022-01-05  4:20       ` [PATCH v5 0/2] name-rev: deprecate --stdin in favor of --annotate-stdin John Cai via GitGitGadget
2022-01-05  4:20         ` [PATCH v5 1/2] " John Cai via GitGitGadget
2022-01-05 20:07           ` Junio C Hamano
2022-01-05  4:20         ` [PATCH v5 2/2] name-rev.c: use strbuf_getline instead of limited size buffer John Cai via GitGitGadget
2022-01-05 22:59         ` [PATCH v6 0/2] name-rev: deprecate --stdin in favor of --annotate-stdin John Cai via GitGitGadget
2022-01-05 22:59           ` [PATCH v6 1/2] " John Cai via GitGitGadget
2022-01-05 23:00           ` [PATCH v6 2/2] name-rev.c: use strbuf_getline instead of limited size buffer John Cai via GitGitGadget
2022-01-05 23:12           ` [PATCH v6 0/2] name-rev: deprecate --stdin in favor of --annotate-stdin Junio C Hamano
2022-01-05 23:29           ` [PATCH v7 " John Cai via GitGitGadget
2022-01-05 23:29             ` [PATCH v7 1/2] " John Cai via GitGitGadget
2022-01-08 13:47               ` John Cai
2022-01-10 17:38                 ` Junio C Hamano
2022-01-10 19:01                   ` John Cai
2022-01-10 19:11                     ` Junio C Hamano
2022-01-11 11:01                       ` Phillip Wood
2022-01-05 23:29             ` [PATCH v7 2/2] name-rev.c: use strbuf_getline instead of limited size buffer John Cai via GitGitGadget
2022-01-18 16:09               ` Ævar Arnfjörð Bjarmason

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=xmqqpmphx1yh.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=johannes.schindelin@gmx.de \
    --cc=johncai86@gmail.com \
    /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.