All of lore.kernel.org
 help / color / mirror / Atom feed
From: "John Cai via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	John Cai <johncai86@gmail.com>
Subject: [PATCH v3 0/2] name-rev: deprecate --stdin in favor of --annotate-stdin
Date: Mon, 03 Jan 2022 14:47:39 +0000	[thread overview]
Message-ID: <pull.1171.v3.git.git.1641221261.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1171.v2.git.git.1640759021.gitgitgadget@gmail.com>

Introduce a --annotate-stdin 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, the goal is to rename it to --anotate-stdin.

This is the first step in a process of eventually fully deprecating --stdin.
This change also adds a warning to --stdin warning that it will be removed
in the future.

See https://lore.kernel.org/git/xmqqsfuh1pxz.fsf@gitster.g/ for discussion.

changes since v2:

 * updated title and cover letter with --annotate-stdin
 * s/--stdin/--annotate-stdin in tests that call name-rev
 * added a test to ensure correct warning is shown when --stdin is passed

John Cai (2):
  name-rev: deprecate --stdin in favor of --annotate-text
  name-rev.c: use strbuf_getline instead of limited size buffer

 Documentation/git-name-rev.txt       | 29 +++++++++++++++++++++++++++-
 builtin/name-rev.c                   | 27 ++++++++++++++++----------
 t/t3412-rebase-root.sh               |  2 +-
 t/t4202-log.sh                       |  2 +-
 t/t6007-rev-list-cherry-pick-file.sh | 26 ++++++++++++-------------
 t/t6012-rev-list-simplify.sh         |  2 +-
 t/t6111-rev-list-treesame.sh         |  3 ++-
 t/t6120-describe.sh                  |  9 +++++++--
 8 files changed, 70 insertions(+), 30 deletions(-)


base-commit: c8b2ade48c204690119936ada89cd938c476c5c2
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1171%2Fjohn-cai%2Fjc%2Fdeprecate-name-rev-stdin-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1171/john-cai/jc/deprecate-name-rev-stdin-v3
Pull-Request: https://github.com/git/git/pull/1171

Range-diff vs v2:

 1:  e8063284b4d ! 1:  55ec2a5fa3e name-rev: deprecate --stdin in favor of --annotate-text
     @@ builtin/name-rev.c: int cmd_name_rev(int argc, const char **argv, const char *pr
       
       		while (!feof(stdin)) {
       			char *p = fgets(buffer, sizeof(buffer), stdin);
     +
     + ## t/t3412-rebase-root.sh ##
     +@@ t/t3412-rebase-root.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
     + 
     + log_with_names () {
     + 	git rev-list --topo-order --parents --pretty="tformat:%s" HEAD |
     +-	git name-rev --stdin --name-only --refs=refs/heads/$1
     ++	git name-rev --annotate-stdin --name-only --refs=refs/heads/$1
     + }
     + 
     + 
     +
     + ## t/t4202-log.sh ##
     +@@ t/t4202-log.sh: EOF
     + 
     + test_expect_success 'log --graph with full output' '
     + 	git log --graph --date-order --pretty=short |
     +-		git name-rev --name-only --stdin |
     ++		git name-rev --name-only --annotate-stdin |
     + 		sed "s/Merge:.*/Merge: A B/;s/ *\$//" >actual &&
     + 	test_cmp expect actual
     + '
     +
     + ## t/t6007-rev-list-cherry-pick-file.sh ##
     +@@ t/t6007-rev-list-cherry-pick-file.sh: EOF
     + 
     + test_expect_success '--left-right' '
     + 	git rev-list --left-right B...C > actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/*" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/*" \
     + 		< actual > actual.named &&
     + 	test_cmp expect actual.named
     + '
     +@@ t/t6007-rev-list-cherry-pick-file.sh: EOF
     + 
     + test_expect_success '--cherry-pick bar does not come up empty' '
     + 	git rev-list --left-right --cherry-pick B...C -- bar > actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/*" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/*" \
     + 		< actual > actual.named &&
     + 	test_cmp expect actual.named
     + '
     + 
     + test_expect_success 'bar does not come up empty' '
     + 	git rev-list --left-right B...C -- bar > actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/*" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/*" \
     + 		< actual > actual.named &&
     + 	test_cmp expect actual.named
     + '
     +@@ t/t6007-rev-list-cherry-pick-file.sh: EOF
     + 
     + test_expect_success '--cherry-pick bar does not come up empty (II)' '
     + 	git rev-list --left-right --cherry-pick F...E -- bar > actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/*" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/*" \
     + 		< actual > actual.named &&
     + 	test_cmp expect actual.named
     + '
     + 
     + test_expect_success 'name-rev multiple --refs combine inclusive' '
     + 	git rev-list --left-right --cherry-pick F...E -- bar >actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/F" --refs="*tags/E" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/F" --refs="*tags/E" \
     + 		<actual >actual.named &&
     + 	test_cmp expect actual.named
     + '
     +@@ t/t6007-rev-list-cherry-pick-file.sh: EOF
     + test_expect_success 'name-rev --refs excludes non-matched patterns' '
     + 	git rev-list --left-right --right-only --cherry-pick F...E -- bar >>expect &&
     + 	git rev-list --left-right --cherry-pick F...E -- bar >actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/F" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/F" \
     + 		<actual >actual.named &&
     + 	test_cmp expect actual.named
     + '
     +@@ t/t6007-rev-list-cherry-pick-file.sh: EOF
     + test_expect_success 'name-rev --exclude excludes matched patterns' '
     + 	git rev-list --left-right --right-only --cherry-pick F...E -- bar >>expect &&
     + 	git rev-list --left-right --cherry-pick F...E -- bar >actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/*" --exclude="*E" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/*" --exclude="*E" \
     + 		<actual >actual.named &&
     + 	test_cmp expect actual.named
     + '
     + 
     + test_expect_success 'name-rev --no-refs clears the refs list' '
     + 	git rev-list --left-right --cherry-pick F...E -- bar >expect &&
     +-	git name-rev --stdin --name-only --refs="*tags/F" --refs="*tags/E" --no-refs --refs="*tags/G" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/F" --refs="*tags/E" --no-refs --refs="*tags/G" \
     + 		<expect >actual &&
     + 	test_cmp expect actual
     + '
     +@@ t/t6007-rev-list-cherry-pick-file.sh: EOF
     + 
     + test_expect_success '--cherry-mark' '
     + 	git rev-list --cherry-mark F...E -- bar > actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/*" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/*" \
     + 		< actual > actual.named &&
     + 	test_cmp expect actual.named
     + '
     +@@ t/t6007-rev-list-cherry-pick-file.sh: EOF
     + 
     + test_expect_success '--cherry-mark --left-right' '
     + 	git rev-list --cherry-mark --left-right F...E -- bar > actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/*" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/*" \
     + 		< actual > actual.named &&
     + 	test_cmp expect actual.named
     + '
     +@@ t/t6007-rev-list-cherry-pick-file.sh: EOF
     + 
     + test_expect_success '--cherry-pick --right-only' '
     + 	git rev-list --cherry-pick --right-only F...E -- bar > actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/*" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/*" \
     + 		< actual > actual.named &&
     + 	test_cmp expect actual.named
     + '
     + 
     + test_expect_success '--cherry-pick --left-only' '
     + 	git rev-list --cherry-pick --left-only E...F -- bar > actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/*" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/*" \
     + 		< actual > actual.named &&
     + 	test_cmp expect actual.named
     + '
     +@@ t/t6007-rev-list-cherry-pick-file.sh: EOF
     + 
     + test_expect_success '--cherry' '
     + 	git rev-list --cherry F...E -- bar > actual &&
     +-	git name-rev --stdin --name-only --refs="*tags/*" \
     ++	git name-rev --annotate-stdin --name-only --refs="*tags/*" \
     + 		< actual > actual.named &&
     + 	test_cmp expect actual.named
     + '
     +
     + ## t/t6012-rev-list-simplify.sh ##
     +@@ t/t6012-rev-list-simplify.sh: note () {
     + }
     + 
     + unnote () {
     +-	git name-rev --tags --stdin | sed -e "s|$OID_REGEX (tags/\([^)]*\)) |\1 |g"
     ++	git name-rev --tags --annotate-stdin | sed -e "s|$OID_REGEX (tags/\([^)]*\)) |\1 |g"
     + }
     + 
     + #
     +
     + ## t/t6111-rev-list-treesame.sh ##
     +@@ t/t6111-rev-list-treesame.sh: note () {
     + }
     + 
     + unnote () {
     +-	git name-rev --tags --stdin | sed -e "s|$OID_REGEX (tags/\([^)]*\))\([ 	]\)|\1\2|g"
     ++	git name-rev --tags --annotate-stdin | \
     ++	sed -e "s|$OID_REGEX (tags/\([^)]*\))\([ 	]\)|\1\2|g"
     + }
     + 
     + test_expect_success setup '
     +
     + ## t/t6120-describe.sh ##
     +@@ t/t6120-describe.sh: test_expect_success 'name-rev --all' '
     + 	test_cmp expect actual
     + '
     + 
     +-test_expect_success 'name-rev --stdin' '
     ++test_expect_success 'name-rev --annotate-stdin' '
     + 	>expect.unsorted &&
     + 	for rev in $(git rev-list --all)
     + 	do
     +@@ t/t6120-describe.sh: test_expect_success 'name-rev --stdin' '
     + 		echo "$rev ($name)" >>expect.unsorted || return 1
     + 	done &&
     + 	sort <expect.unsorted >expect &&
     +-	git rev-list --all | git name-rev --stdin >actual.unsorted &&
     ++	git rev-list --all | git name-rev --annotate-stdin >actual.unsorted &&
     + 	sort <actual.unsorted >actual &&
     + 	test_cmp expect actual
     + '
     + 
     ++test_expect_success 'name-rev --stdin deprecated' "
     ++	git rev-list --all | git name-rev --stdin 2>actual &&
     ++	grep -E 'warning: --stdin is deprecated' actual
     ++"
     ++
     + test_expect_success 'describe --contains with the exact tags' '
     + 	echo "A^0" >expect &&
     + 	tag_object=$(git rev-parse refs/tags/A) &&
 2:  4636e27f53e = 2:  e4bd09ccf75 name-rev.c: use strbuf_getline instead of limited size buffer

-- 
gitgitgadget

  parent reply	other threads:[~2022-01-03 14:47 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
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   ` John Cai via GitGitGadget [this message]
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=pull.1171.v3.git.git.1641221261.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --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.