Re: [PATCH 18/30] subtree: use $* instead of $@ as appropriate
- From
Luke Shumaker <lukeshu@lukeshu.com>
- Date
- Apr 23, 2021, 23:50 UTC
- Message-ID
- <87zgxoa7cj.wl-lukeshu@lukeshu.com>
- In-Reply-To
- <CAPig+cTb-h=Qb9asvh+MVH2s5uj7szP_QOPpcm1bqdE6DK9V7g@mail.gmail.com>
On Fri, 23 Apr 2021 14:40:31 -0600, Eric Sunshine wrote:
Show 19 quoted lines
> > On Fri, Apr 23, 2021 at 3:43 PM Luke Shumaker <lukeshu@lukeshu.com> wrote: > > $* 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