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

[PATCH v2 1/2] name-rev: deprecate --stdin in favor of --annotate-text

From
John Cai via GitGitGadget <gitgitgadget@gmail.com>
Date
Dec 29, 2021, 06:23 UTC
Message-ID
<e8063284b4d0d410d1ee8337c60f5ce3b48efb11.1640759021.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.1171.v2.git.git.1640759021.gitgitgadget@gmail.com>
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.

Signed-off-by: "John Cai" <johncai86@gmail.com>
---
 Documentation/git-name-rev.txt | 29 ++++++++++++++++++++++++++++-
 builtin/name-rev.c             | 19 ++++++++++++++-----
 2 files changed, 42 insertions(+), 6 deletions(-)
diff --git a/Documentation/git-name-rev.txt b/Documentation/git-name-rev.txt
index 5cb0eb0855f..ee11b2ca9e7 100644
--- a/Documentation/git-name-rev.txt
+++ b/Documentation/git-name-rev.txt
@@ -43,10 +43,37 @@ OPTIONS
 	List all commits reachable from all refs
 
 --stdin::
+	This option is deprecated in favor of 'git name-rev --annotate-stdin'.
+	They are functionally equivalent.
+
+--annotate-stdin::
 	Transform stdin by substituting all the 40-character SHA-1
 	hexes (say $hex) with "$hex ($rev_name)".  When used with
 	--name-only, substitute with "$rev_name", omitting $hex
-	altogether.  Intended for the scripter's use.
+	altogether.
+
+	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-stdin <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-stdin <sample.txt
+
+An abbreviated revision 2ae0a9cb82 will not be substituted.
+The full name is master,
+while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad
+----------
 
 --name-only::
 	Instead of printing both the SHA-1 and the name, print only
diff --git a/builtin/name-rev.c b/builtin/name-rev.c
index 27f60153a6c..21370afdaf9 100644
--- a/builtin/name-rev.c
+++ b/builtin/name-rev.c
@@ -527,7 +527,7 @@ static void name_rev_line(char *p, struct name_ref_data *data)
 int cmd_name_rev(int argc, const char **argv, const char *prefix)
 {
 	struct object_array revs = OBJECT_ARRAY_INIT;
-	int all = 0, transform_stdin = 0, allow_undefined = 1, always = 0, peel_tag = 0;
+	int all = 0, annotate_stdin = 0, transform_stdin = 0, allow_undefined = 1, always = 0, peel_tag = 0;
 	struct name_ref_data data = { 0, 0, STRING_LIST_INIT_NODUP, STRING_LIST_INIT_NODUP };
 	struct option opts[] = {
 		OPT_BOOL(0, "name-only", &data.name_only, N_("print only ref-based names (no object names)")),
@@ -539,6 +539,7 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
 		OPT_GROUP(""),
 		OPT_BOOL(0, "all", &all, N_("list all commits reachable from all refs")),
 		OPT_BOOL(0, "stdin", &transform_stdin, N_("read from stdin")),
+		OPT_BOOL(0, "annotate-stdin", &annotate_stdin, N_("annotate text from stdin")),
 		OPT_BOOL(0, "undefined", &allow_undefined, N_("allow to print `undefined` names (default)")),
 		OPT_BOOL(0, "always",     &always,
 			   N_("show abbreviated commit object as fallback")),
@@ -554,11 +555,19 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
 	init_commit_rev_name(&rev_names);
 	git_config(git_default_config, NULL);
 	argc = parse_options(argc, argv, prefix, opts, name_rev_usage, 0);
-	if (all + transform_stdin + !!argc > 1) {
+
+	if (transform_stdin) {
+		warning("--stdin is deprecated. Please use --annotate-stdin instead, "
+					"which is functionally equivalent.\n"
+					"This option will be removed in a future release.");
+		annotate_stdin = 1;
+	}
+
+	if (all + annotate_stdin + !!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_stdin)
 		cutoff = 0;
 
 	for (; argc; argc--, argv++) {
@@ -613,8 +622,8 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
 	for_each_ref(name_ref, &data);
 	name_tips();
 
-	if (transform_stdin) {
-		char buffer[2048];
+	if (annotate_stdin) {
+		struct strbuf sb = STRBUF_INIT;
 
 		while (!feof(stdin)) {
 			char *p = fgets(buffer, sizeof(buffer), stdin);
-- 
gitgitgadget
Previous: John Cai via GitGitGadgetNext: Junio C Hamano
Message 7 of 43 in “name-rev: deprecate --stdin in favor of --annotate-text”
  1. name-rev: deprecate --stdin in favor of --annotate-textJohn Cai via GitGitGadget, Dec 26, 2021
  2. Junio C HamanoDec 27, 2021
  3. John CaiDec 28, 2021
  4. Junio C HamanoDec 31, 2021
  5. Johannes SchindelinJan 1, 2022
  6. 0/2 name-rev: deprecate --stdin in favor of --anotate-textJohn Cai via GitGitGadget, Dec 29, 2021
  7. 1/2 name-rev: deprecate --stdin in favor of --annotate-textJohn Cai via GitGitGadget, Dec 29, 2021
  8. Junio C HamanoDec 30, 2021
  9. 2/2 name-rev.c: use strbuf_getline instead of limited size bufferJohn Cai via GitGitGadget, Dec 29, 2021
  10. 0/2 name-rev: deprecate --stdin in favor of --annotate-stdinJohn Cai via GitGitGadget, Jan 3, 2022
  11. 1/2 name-rev: deprecate --stdin in favor of --annotate-textJohn Cai via GitGitGadget, Jan 3, 2022
  12. Junio C HamanoJan 4, 2022
  13. Junio C HamanoJan 4, 2022
  14. Philip OakleyJan 4, 2022
  15. Junio C HamanoJan 4, 2022
  16. Eric SunshineJan 4, 2022
  17. 2/2 name-rev.c: use strbuf_getline instead of limited size bufferJohn Cai via GitGitGadget, Jan 3, 2022
  18. Junio C HamanoJan 4, 2022
  19. 0/2 name-rev: deprecate --stdin in favor of --annotate-stdinJohn Cai via GitGitGadget, Jan 4, 2022
  20. 1/2 name-rev: deprecate --stdin in favor of --annotate-stdinJohn Cai via GitGitGadget, Jan 4, 2022
  21. Junio C HamanoJan 4, 2022
  22. Phillip WoodJan 5, 2022
  23. Junio C HamanoJan 5, 2022
  24. Junio C HamanoJan 5, 2022
  25. 2/2 name-rev.c: use strbuf_getline instead of limited size bufferJohn Cai via GitGitGadget, Jan 4, 2022
  26. John CaiJan 4, 2022
  27. 0/2 name-rev: deprecate --stdin in favor of --annotate-stdinJohn Cai via GitGitGadget, Jan 5, 2022
  28. 2/2 name-rev.c: use strbuf_getline instead of limited size bufferJohn Cai via GitGitGadget, Jan 5, 2022
  29. 1/2 name-rev: deprecate --stdin in favor of --annotate-stdinJohn Cai via GitGitGadget, Jan 5, 2022
  30. Junio C HamanoJan 5, 2022
  31. 0/2 name-rev: deprecate --stdin in favor of --annotate-stdinJohn Cai via GitGitGadget, Jan 5, 2022
  32. 1/2 name-rev: deprecate --stdin in favor of --annotate-stdinJohn Cai via GitGitGadget, Jan 5, 2022
  33. 2/2 name-rev.c: use strbuf_getline instead of limited size bufferJohn Cai via GitGitGadget, Jan 5, 2022
  34. Junio C HamanoJan 5, 2022
  35. 0/2 name-rev: deprecate --stdin in favor of --annotate-stdinJohn Cai via GitGitGadget, Jan 5, 2022
  36. 1/2 name-rev: deprecate --stdin in favor of --annotate-stdinJohn Cai via GitGitGadget, Jan 5, 2022
  37. John CaiJan 8, 2022
  38. Junio C HamanoJan 10, 2022
  39. John CaiJan 10, 2022
  40. Junio C HamanoJan 10, 2022
  41. Phillip WoodJan 11, 2022
  42. 2/2 name-rev.c: use strbuf_getline instead of limited size bufferJohn Cai via GitGitGadget, Jan 5, 2022
  43. Ævar Arnfjörð BjarmasonJan 18, 2022

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.