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. Signed-off-by: Luke Shumaker <lukeshu@datawire.io> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Luke Shumaker committed Apr 27, 2021 at 15:17 UTC a94f911072eb096184d3b4daeb58722dc339d0d9
1 file changed +3 -3
contrib/subtree/git-subtree.sh
+3 -3
@@ -58,14 +58,14 @@ progress () {
58 assert () {
59 if ! "$@"
60 then
61 - die "assertion failed: " "$@"
61 + die "assertion failed: $*"
62 fi
63 }
64
65 ensure_single_rev () {
66 if test $# -ne 1
67 then
68 - die "You must provide exactly one revision. Got: '$@'"
68 + die "You must provide exactly one revision. Got: '$*'"
69 fi
70 }
71
@@ -690,7 +690,7 @@ cmd_add () {
690
691 cmd_add_repository "$@"
692 else
693 - say >&2 "error: parameters were '$@'"
693 + say >&2 "error: parameters were '$*'"
694 die "Provide either a commit or a repository and commit."
695 fi
696 }