From: Junio C Hamano <gitster@pobox.com> To: "ZheNing Hu via GitGitGadget" <gitgitgadget@gmail.com> Cc: git@vger.kernel.org, Christian Couder <christian.couder@gmail.com>, ZheNing Hu <adlternative@gmail.com> Subject: Re: [PATCH v9 1/2] [GSOC] docs: correct descript of trailer.<token>.command Date: Mon, 12 Apr 2021 13:42:43 -0700 [thread overview] Message-ID: <xmqqwnt7b5fg.fsf@gitster.g> (raw) In-Reply-To: <8129ef6c476b4f35be59eae71367de5b83888068.1618245568.git.gitgitgadget@gmail.com> (ZheNing Hu via GitGitGadget's message of "Mon, 12 Apr 2021 16:39:26 +0000") "ZheNing Hu via GitGitGadget" <gitgitgadget@gmail.com> writes: > trailer.<token>.command:: > + This option can be used to specify a shell command that will be called: > + once to automatically add a trailer with the specified <token>, and then > + each time a '--trailer <token>=<value>' argument to modify the <value> of > + the trailer that this option would produce. > + > -When this option is specified, the behavior is as if a special > +When the specified command is first called to add a trailer > +with the specified <token>, the behavior is as if a special > +'--trailer <token>=<value>' argument was added at the beginning > +of the "git interpret-trailers" command, where <value> > +is taken to be the standard output of the command with any > +leading and trailing whitespace trimmed off. So, with [trailer "foo"] command = "echo $ARG" in your .git/config $ git interpret-trailers </dev/null gives 'foo:'. > +If some '--trailer <token>=<value>' arguments are also passed > +on the command line, the command is called again once for each > +of these arguments with the same <token>. And the <value> part > +of these arguments, if any, will be used to replace the first > +occurrence of substring `$ARG` in the command. This way the > +command can produce a <value> computed from the <value> passed > +in the '--trailer <token>=<value>' argument. > + > +For consistency, the first occurrence of substring `$ARG` is > +also replaced, this time with the empty string, in the command > +when the command is first called to add a trailer with the > +specified <token>. And then $ git interpret-trailers --trailer=foo:F </dev/null would give you foo: foo: F The above is quite an easy to read explanation of the behaviour. I somehow wonder if this "run with empty even without anything on the command line" a misfeature, and I'd prefer to iron it out before we add .cmd, because we may not want to inherit it to the new .cmd, just like we avoided '$ARG' that does not properly quote and replaces only once from getting inherited by .cmd mechanism. The reason why I suspect this may be a misfeature is because I do not see any way to avoid 'foo' trailer once trailer.foo.command is set. Which means I cannot use this mechanism to emulate "commit -s", which would hopefully be something like [trailer "signoff"] command = "git var GIT_COMMITTER_IDENT | sed -e 's/>.*/>/" ifexists = addIfDifferentNeighbor And trailer.signoff.ifmissing=donothing would not help in this case, either, I am afraid, as that would not just suppress the automatic empty one, which is fairly useless, but also suppresses the one that is made in response to the option from the command line. Christian? What's your thought on this? I can understand that it sometimes may be useful to unconditionally be able to add a trailer without doing anything from the command line, but it feels fairly useless that an empty one is automatically added, that the only way to hide that empty one from the end result is to use ifexists=replace, and that there is no apparent way to remove the empty one. The --trim-empty option is a bit too crude a band-aid to use, as the existing log message may have an unrelated trailer for which it is perfectly valid not to have any value. The fix we'd do when introducing .cmd should also get rid of this initial "run with an empty even when not asked"? Or if the execution without any input from the command line were truly useful sometimes, a configuration variable that disables this behaviour, i.e. [trailer "signoff"] command = "git who" ifexists = addIfDifferentNeighbor implicitExecution = false so that git commit --trailer=signoff:Couder --trailer=signoff:gitster@ would give us two sign-offs without the empty one, perhaps? In any case, the documentation update in this step looks reasonably well written. Thanks.
next prev parent reply other threads:[~2021-04-12 20:42 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 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 [this message] 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=xmqqwnt7b5fg.fsf@gitster.g \ --to=gitster@pobox.com \ --cc=adlternative@gmail.com \ --cc=christian.couder@gmail.com \ --cc=git@vger.kernel.org \ --cc=gitgitgadget@gmail.com \ --subject='Re: [PATCH v9 1/2] [GSOC] docs: correct descript of trailer.<token>.command' \ /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).