ZheNing Hu <adlternative@xxxxxxxxx> writes: > Junio C Hamano <gitster@xxxxxxxxx> 于2021年3月23日周二 下午2:19写道: >> >> Christian Couder <christian.couder@xxxxxxxxx> writes: >> >> > If you want nothing to happen when $ARG isn't set, you can change the >> > config option to something like: >> > >> > $ git config trailer.sign.command "NAME='\$ARG'; test -n \"\$NAME\" && >> > git log --author=\"\$NAME\" -1 --format='format:%aN <%aE>' || true" >> > >> > (This is because it looks like $ARG is replaced only once with the >> > actual value, which is perhaps a bug. Otherwise something like the >> > following might work: >> >> I do not know the origin of that code in trailers.c but it feels >> quite confused and error prone to use textual replacement with >> strbuf_replace(). Why doesn't the code, which knows it will use >> shell to execute the command line given by the end user in the >> configuration, to just export ARG as an environment variable and >> be done with it? It would also avoid quoting problem etc. >> > > Maybe like this? Code is not an important part. We should think through ramifications of making (and not making) such a change first.