Re: [PATCH 18/30] subtree: use $* instead of $@ as appropriate
From: Luke Shumaker <hidden>
Date: 2021-04-23 23:50:47
On Fri, 23 Apr 2021 14:40:31 -0600, Eric Sunshine wrote:
On Fri, Apr 23, 2021 at 3:43 PM Luke Shumaker [off-list ref] wrote:quoted
$* is for when you want to smash things together, whitespace-separated; $@ is for when you want them to be separate strings. There are a couple of places in subtree that erroneously use $@ when smashing args together in to an error message.Can we be explicit and say "$@" in the commit message rather than bare $@ since the unquoted form is not magical and acts exactly like $*. Also: s/in to/into/ Nit: I have some trouble following what the commit message is actually trying to say with "smash things" and "separate strings". It might be simpler to say merely that use of "$@" in these particular instances is overkill and possibly misleading to readers not familiar with the finer details of $* vs. "$@". The patch itself makes sense.
How's this:
---
subtree: use "$*" instead of "$@" as appropriate
"$*" is for when you want to concatenate the args together,
whitespace-separated; and "$@" is for when you want them to be separate
strings.
There are several places in subtree that erroneously use $@ when
concatenating args together into an error message.
For instance, if the args are argv[1]="dead" and argv[2]="beef", then
the line
die "You must provide exactly one revision. Got: '$@'"
surely intends to call 'die' with the argument
argv[1]="You must provide exactly one revision. Got: 'dead beef'"
however, because the line used $@ instead of $*, it will actually call
'die' with the arguments
argv[1]="You must provide exactly one revision. Got: 'dead"
argv[2]="beef'"
This isn't a big deal, because 'die' concatenates its arguments together
anyway (using "$*"). But that doesn't change the fact that it was a
mistake to use $@ instead of $*, even though in the end $@ still ended
up doing the right thing.
---
--
Happy hacking,
~ Luke Shumaker