[PATCH v6 0/2] name-rev: deprecate --stdin in favor of --annotate-stdin
- From
John Cai via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jan 5, 2022, 22:59 UTC
- Message-ID
- <pull.1171.v6.git.git.1641423600.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1171.v5.git.git.1641356439.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 --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 v5:
* fixed documentation example indentation (again) * moved initialization of strbuf from 1/2 to 2/2
changes since v4:
* fixed documentation example indentation
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 | 30 ++++++++++++++++++---------- 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, 72 insertions(+), 32 deletions(-)
base-commit: c8b2ade48c204690119936ada89cd938c476c5c2 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1171%2Fjohn-cai%2Fjc%2Fdeprecate-name-rev-stdin-v6 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1171/john-cai/jc/deprecate-name-rev-stdin-v6 Pull-Request: https://github.com/git/git/pull/1171
Range-diff vs v5:
1: 7c5fb10d87c ! 1: 3caf254a73e name-rev: deprecate --stdin in favor of --annotate-stdin
@@ Documentation/git-name-rev.txt: OPTIONS
++
+For example:
++
-+--
-+ $ cat sample.txt
++-----------
++$ cat sample.txt
+
-+ An abbreviated revision 2ae0a9cb82 will not be substituted.
-+ The full name after substitution is 2ae0a9cb8298185a94e5998086f380a355dd8907,
-+ while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad
++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
++$ 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
++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
++$ git name-rev --name-only --annotate-stdin <sample.txt
+
-+ An abbreviated revision 2ae0a9cb82 will not be substituted.
-+ The full name after substitution is master,
-+ while its tree object is 70d105cc79e63b81cfdcb08a15297c23e60b07ad
-+--
++An abbreviated revision 2ae0a9cb82 will not be substituted.
++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'.
@@ builtin/name-rev.c: static void name_rev_line(char *p, struct name_ref_data *dat
struct option opts[] = {
OPT_BOOL(0, "name-only", &data.name_only, N_("print only ref-based names (no object names)")),
@@ builtin/name-rev.c: int cmd_name_rev(int argc, const char **argv, const char *prefix)
+ N_("ignore refs matching <pattern>")),
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, "stdin", &transform_stdin, N_("read from stdin")),
++ OPT_BOOL_F(0, "stdin", &transform_stdin, N_("deprecated: use annotate-stdin instead"), PARSE_OPT_HIDDEN),
+ 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,
@@ builtin/name-rev.c: int cmd_name_rev(int argc, const char **argv, const char *pr
name_tips();
- if (transform_stdin) {
-- char buffer[2048];
+ if (annotate_stdin) {
-+ struct strbuf sb = STRBUF_INIT;
+ char buffer[2048];
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
2: 2acd70f36e7 ! 2: 32ad96530b9 name-rev.c: use strbuf_getline instead of limited size buffer
@@ Commit message
## builtin/name-rev.c ##
@@ builtin/name-rev.c: int cmd_name_rev(int argc, const char **argv, const char *prefix)
+ name_tips();
+
if (annotate_stdin) {
- struct strbuf sb = STRBUF_INIT;
+- char buffer[2048];
++ struct strbuf sb = STRBUF_INIT;
- while (!feof(stdin)) {
- char *p = fgets(buffer, sizeof(buffer), stdin);-- gitgitgadget