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 --annotate-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 v3: * use strbuf_getline instead of strbuf_getwholeline (based on Junio's feedback) * fixed commit message s/annotate-text/annotate-stdin (based on Junio's feedback) * since strbuf_getline does not keep the trailing terminator, add back '\n' with strbuf_addchr * reordered documentation blocks based on (Philip Oakley's feedback) * fixed doc typos in example block John Cai (2): name-rev: deprecate --stdin in favor of --annotate-stdin name-rev.c: use strbuf_getline instead of limited size buffer Documentation/git-name-rev.txt | 30 ++++++++++++++++++++++++++-- builtin/name-rev.c | 28 ++++++++++++++++---------- 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, 71 insertions(+), 31 deletions(-) base-commit: c8b2ade48c204690119936ada89cd938c476c5c2 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1171%2Fjohn-cai%2Fjc%2Fdeprecate-name-rev-stdin-v4 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1171/john-cai/jc/deprecate-name-rev-stdin-v4 Pull-Request: https://github.com/git/git/pull/1171 Range-diff vs v3: 1: 55ec2a5fa3e ! 1: 4e9200922a4 name-rev: deprecate --stdin in favor of --annotate-text @@ Metadata Author: John Cai <johncai86@xxxxxxxxx> ## Commit message ## - name-rev: deprecate --stdin in favor of --annotate-text + name-rev: deprecate --stdin in favor of --annotate-stdin - Introduce a --annotate-text that is functionally equivalent of --stdin. + 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, rename it to --annotate-text. + be a confusing and misleading name, rename it to --annotate-stdin. This change adds a warning to --stdin warning that it will be removed in the future. @@ Commit message ## Documentation/git-name-rev.txt ## @@ Documentation/git-name-rev.txt: OPTIONS + --all:: List all commits reachable from all refs - --stdin:: -+ This option is deprecated in favor of 'git name-rev --annotate-stdin'. -+ They are functionally equivalent. -+ +---stdin:: +--annotate-stdin:: Transform stdin by substituting all the 40-character SHA-1 hexes (say $hex) with "$hex ($rev_name)". When used with @@ Documentation/git-name-rev.txt: OPTIONS - altogether. Intended for the scripter's use. + altogether. + -+ For example: -++ ++For example: ++ +---------- +$ cat sample.txt + @@ Documentation/git-name-rev.txt: OPTIONS +$ git name-rev --annotate-stdin <sample.txt + +An abbreviated revision 2ae0a9cb82 will not be substituted. -+The full name after substitution is 2ae0a9cb8298185a94e5998086f380a355dd8907 -+(master), ++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, ++The full name after substitution is master, +while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad +---------- ++ ++--stdin:: ++ This option is deprecated in favor of 'git name-rev --annotate-stdin'. ++ They are functionally equivalent. --name-only:: Instead of printing both the SHA-1 and the name, print only 2: e4bd09ccf75 ! 2: 18f77ab9dde name-rev.c: use strbuf_getline instead of limited size buffer @@ builtin/name-rev.c: int cmd_name_rev(int argc, const char **argv, const char *pr - if (!p) - break; - name_rev_line(p, &data); -+ while (strbuf_getwholeline(&sb, stdin, '\n') != EOF) { ++ while (strbuf_getline(&sb, stdin) != EOF) { ++ strbuf_addch(&sb, '\n'); + name_rev_line(sb.buf, &data); } + strbuf_release(&sb); -- gitgitgadget