From: ZheNing Hu <adlternative@gmail.com> To: Junio C Hamano <gitster@pobox.com> Cc: ZheNing Hu via GitGitGadget <gitgitgadget@gmail.com>, Git List <git@vger.kernel.org>, Christian Couder <christian.couder@gmail.com> Subject: Re: [PATCH v2] [GSOC]trailer: pass arg as positional parameter Date: Thu, 25 Mar 2021 09:43:58 +0800 [thread overview] Message-ID: <CAOLTT8TeL3MofqoGUR2fXq+b+s8ZuxdjkdVnfiuG+vk2TUcwcg@mail.gmail.com> (raw) In-Reply-To: <xmqqft0kxq4m.fsf@gitster.g> Junio C Hamano <gitster@pobox.com> 于2021年3月25日周四 上午4:18写道: > > "ZheNing Hu via GitGitGadget" <gitgitgadget@gmail.com> writes: > > > From: ZheNing Hu <adlternative@gmail.com> > > > > In the original implementation of `trailer.<token>.command`, > > use `strbuf_replace` to replace $ARG in the <value> of the > > trailer, but it have a problem: `strbuf_replace` replace the > > $ARG in command only once, If the user's trailer command have > > used more than one $ARG, error will occur. > > > > If directly modify the implementation of the original > > `trailer.<token>.command`, The user’s previous `'$ARG'` in > > trailer command will not be replaced. So now add new > > config "trailer.<token>.cmd", pass trailer's value as > > positional parameter 1 to the user's command, users can > > use $1 as trailer's value, to implement original variable > > replacement. > > > > Original `trailer.<token>.command` can still be used until git > > completely abandoned it. > > Sorry, but that's quite an ungrammatical mess X-<. > Somewhat embarrassing. I have tried to fix it... > > 1: abc5b04d152f ! 1: 185356d6fc90 [GSOC]trailer: change $ARG to environment variable > > @@ Metadata > > Author: ZheNing Hu <adlternative@gmail.com> > > As this is completely a different design and does not share anything > with the earlier round, the range-diff is merely distracting and > useless. > I thought the designs of the two were very similar. > > Documentation/git-interpret-trailers.txt | 7 +++++++ > > t/t7513-interpret-trailers.sh | 22 +++++++++++++++++++- > > trailer.c | 26 +++++++++++++++++------- > > 3 files changed, 47 insertions(+), 8 deletions(-) > > > > diff --git a/Documentation/git-interpret-trailers.txt b/Documentation/git-interpret-trailers.txt > > index 96ec6499f001..38656b1b3841 100644 > > --- a/Documentation/git-interpret-trailers.txt > > +++ b/Documentation/git-interpret-trailers.txt > > @@ -252,6 +252,13 @@ also be executed for each of these arguments. And the <value> part of > > these arguments, if any, will be used to replace the `$ARG` string in > > the command. > > > > +trailer.<token>.cmd:: > > + Similar to 'trailer.<token>.command'. But the difference is that > > + `$1` is used in the command to replace the value of the trailer > > + instead of the original `$ARG`, which means that we can quote the > > "quote"? > parse. > > + trailer value multiple times in the command. > > + E.g. `trailer.sign.cmd="test -n \"$1\" && echo \"$1\" || true "` > > This needs to explain what happens if the user gives both .cmd and > .command to the same token. Is it an error? Is the newly invented > .cmd takes precedence? Something else? > For the time being, if I make "cmd" and "command" equivalent, it will only trigger a warning. > Whatever the answer is, the reasoning behind reaching the design > must be explained and defended in the proposed log message. > OK. > > > diff --git a/trailer.c b/trailer.c > > index be4e9726421c..80f47657ff1a 100644 > > --- a/trailer.c > > +++ b/trailer.c > > @@ -14,6 +14,7 @@ struct conf_info { > > char *name; > > char *key; > > char *command; > > + int is_new_cmd; > > Poor naming. The .cmd thing may be "new" right now in your mind, > but how would you transition out of it when design flaws are > discovered in it and replace it with yet another mechanism? > I thought if the "command" will need to be replaced in later releases, "is_new_cmd" will be removed at the same time, now I think "is_new_cmd" may cause misunderstandings. > Add a new "char *cmd" field, and at the using site, define the > precedence between the two when both cmd and command members of the > structure are populated, perhaps? It sounds feasible, I will try. Thanks.
next prev parent reply other threads:[~2021-03-25 1:45 UTC|newest] Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-03-23 14:53 [PATCH] [GSOC]trailer: change $ARG to environment variable ZheNing Hu via GitGitGadget 2021-03-24 15:42 ` [PATCH v2] [GSOC]trailer: pass arg as positional parameter ZheNing Hu via GitGitGadget 2021-03-24 20:18 ` Junio C Hamano 2021-03-25 1:43 ` ZheNing Hu [this message] 2021-03-25 11:53 ` [PATCH v3] " ZheNing Hu via GitGitGadget 2021-03-25 22:28 ` Junio C Hamano 2021-03-26 13:29 ` ZheNing Hu 2021-03-26 16:13 ` [PATCH v4] " ZheNing Hu via GitGitGadget 2021-03-27 18:04 ` Junio C Hamano 2021-03-27 19:53 ` Christian Couder 2021-03-28 10:46 ` ZheNing Hu 2021-03-29 9:04 ` Christian Couder 2021-03-29 13:43 ` ZheNing Hu 2021-03-30 8:45 ` Christian Couder 2021-03-30 11:22 ` ZheNing Hu 2021-03-30 15:07 ` ZheNing Hu 2021-03-30 17:14 ` Junio C Hamano 2021-03-31 5:14 ` ZheNing Hu 2021-03-31 18:19 ` Junio C Hamano 2021-03-31 18:29 ` Junio C Hamano 2021-04-01 3:56 ` ZheNing Hu 2021-04-01 19:49 ` Junio C Hamano 2021-04-02 2:08 ` ZheNing Hu 2021-04-01 3:39 ` ZheNing Hu 2021-03-31 10:05 ` [PATCH v5 0/2] " ZheNing Hu via GitGitGadget 2021-03-31 10:05 ` [PATCH v5 1/2] [GSOC] run-command: add shell_no_implicit_args option ZheNing Hu via GitGitGadget 2021-04-01 7:22 ` Christian Couder 2021-04-01 9:58 ` ZheNing Hu 2021-03-31 10:05 ` [PATCH v5 2/2] [GSOC]trailer: pass arg as positional parameter ZheNing Hu via GitGitGadget 2021-04-01 7:28 ` [PATCH v5 0/2] " Christian Couder 2021-04-01 10:02 ` ZheNing Hu 2021-04-02 13:26 ` [PATCH v6] [GSOC] trailer: add new trailer.<token>.cmd config option ZheNing Hu via GitGitGadget 2021-04-02 20:48 ` Junio C Hamano 2021-04-03 5:08 ` ZheNing Hu 2021-04-04 5:34 ` Junio C Hamano 2021-04-03 5:51 ` Christian Couder 2021-04-04 23:26 ` Junio C Hamano 2021-04-06 3:47 ` Christian Couder 2021-04-06 3:52 ` Christian Couder 2021-04-06 5:16 ` ZheNing Hu 2021-04-06 5:34 ` Junio C Hamano 2021-04-06 5:37 ` Junio C Hamano 2021-04-04 5:43 ` ZheNing Hu 2021-04-04 8:52 ` Christian Couder 2021-04-04 9:53 ` ZheNing Hu 2021-04-02 23:44 ` Junio C Hamano 2021-04-03 3:22 ` ZheNing Hu 2021-04-03 4:31 ` Junio C Hamano 2021-04-03 5:15 ` ZheNing Hu 2021-04-04 13:11 ` [PATCH v7] " ZheNing Hu via GitGitGadget 2021-04-06 16:23 ` Christian Couder 2021-04-07 4:51 ` ZheNing Hu 2021-04-09 13:37 ` [PATCH v8 0/2] [GSOC] trailer: add new .cmd " ZheNing Hu via GitGitGadget 2021-04-09 13:37 ` [PATCH v8 1/2] [GSOC] docs: correct descript of trailer.<token>.command ZheNing Hu via GitGitGadget 2021-04-09 19:02 ` Christian Couder 2021-04-10 13:40 ` ZheNing Hu 2021-04-09 13:37 ` [PATCH v8 2/2] [GSOC] trailer: add new .cmd config option ZheNing Hu via GitGitGadget 2021-04-09 20:18 ` Christian Couder 2021-04-10 14:09 ` ZheNing Hu 2021-04-09 19:59 ` [PATCH v8 0/2] " Christian Couder 2021-04-12 16:39 ` [PATCH v9 " ZheNing Hu via GitGitGadget 2021-04-12 16:39 ` [PATCH v9 1/2] [GSOC] docs: correct descript of trailer.<token>.command ZheNing Hu via GitGitGadget 2021-04-12 20:42 ` Junio C Hamano 2021-04-16 12:03 ` Christian Couder 2021-04-17 1:54 ` Junio C Hamano 2021-04-12 16:39 ` [PATCH v9 2/2] [GSOC] trailer: add new .cmd config option ZheNing Hu via GitGitGadget 2021-04-12 20:51 ` Junio C Hamano 2021-04-13 7:33 ` Christian Couder 2021-04-13 12:02 ` ZheNing Hu 2021-04-13 19:18 ` Junio C Hamano 2021-04-14 13:27 ` ZheNing Hu 2021-04-14 20:33 ` Junio C Hamano 2021-04-15 15:32 ` ZheNing Hu 2021-04-15 17:41 ` Junio C Hamano 2021-04-16 12:54 ` Christian Couder 2021-04-13 18:14 ` Junio C Hamano 2021-04-16 8:47 ` [PATCH v10 0/2] " ZheNing Hu via GitGitGadget 2021-04-16 8:47 ` [PATCH v10 1/2] [GSOC] docs: correct descript of trailer.<token>.command ZheNing Hu via GitGitGadget 2021-04-16 19:11 ` Junio C Hamano 2021-04-16 8:47 ` [PATCH v10 2/2] [GSOC] trailer: add new .cmd config option ZheNing Hu via GitGitGadget 2021-04-16 19:13 ` Junio C Hamano 2021-04-16 19:21 ` Junio C Hamano 2021-04-16 19:25 ` Junio C Hamano 2021-04-17 2:58 ` Junio C Hamano 2021-04-17 3:36 ` Junio C Hamano 2021-04-17 7:41 ` ZheNing Hu 2021-04-17 8:11 ` Junio C Hamano 2021-04-17 15:13 ` [PATCH v11 0/2] " ZheNing Hu via GitGitGadget 2021-04-17 15:13 ` [PATCH v11 1/2] [GSOC] docs: correct description of .command ZheNing Hu via GitGitGadget 2021-04-17 15:13 ` [PATCH v11 2/2] [GSOC] trailer: add new .cmd config option ZheNing Hu via GitGitGadget 2021-04-17 22:26 ` [PATCH v11 0/2] " Junio C Hamano 2021-04-18 7:47 ` ZheNing Hu 2021-04-21 0:09 ` Junio C Hamano 2021-04-21 5:47 ` ZheNing Hu 2021-04-21 23:40 ` Junio C Hamano 2021-04-22 9:20 ` ZheNing Hu 2021-04-27 6:49 ` Junio C Hamano 2021-04-27 12:24 ` ZheNing Hu 2021-05-03 15:41 ` [PATCH v12 " ZheNing Hu via GitGitGadget 2021-05-03 15:41 ` [PATCH v12 1/2] [GSOC] docs: correct descript of trailer.<token>.command ZheNing Hu via GitGitGadget 2021-05-03 15:41 ` [PATCH v12 2/2] [GSOC] trailer: add new .cmd config option ZheNing Hu via GitGitGadget
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 List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAOLTT8TeL3MofqoGUR2fXq+b+s8ZuxdjkdVnfiuG+vk2TUcwcg@mail.gmail.com \ --to=adlternative@gmail.com \ --cc=christian.couder@gmail.com \ --cc=git@vger.kernel.org \ --cc=gitgitgadget@gmail.com \ --cc=gitster@pobox.com \ --subject='Re: [PATCH v2] [GSOC]trailer: pass arg as positional parameter' \ /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
Code repositories for project(s) associated with this inbox: https://80x24.org/mirrors/git.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).