]> git.ipfire.org Git - thirdparty/git.git/commitdiff
subtree: use "$*" instead of "$@" as appropriate
authorLuke Shumaker <lukeshu@datawire.io>
Tue, 27 Apr 2021 21:17:36 +0000 (15:17 -0600)
committerJunio C Hamano <gitster@pobox.com>
Wed, 28 Apr 2021 07:47:18 +0000 (16:47 +0900)
"$*" 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>
contrib/subtree/git-subtree.sh

index d7de4b06538c749485b37b39165a73dc0d044174..3105eb8033d74e55e9927fc0f435f76ab3e392cf 100755 (executable)
@@ -58,14 +58,14 @@ progress () {
 assert () {
        if ! "$@"
        then
-               die "assertion failed: " "$@"
+               die "assertion failed: $*"
        fi
 }
 
 ensure_single_rev () {
        if test $# -ne 1
        then
-               die "You must provide exactly one revision.  Got: '$@'"
+               die "You must provide exactly one revision.  Got: '$*'"
        fi
 }
 
@@ -690,7 +690,7 @@ cmd_add () {
 
                cmd_add_repository "$@"
        else
-               say >&2 "error: parameters were '$@'"
+               say >&2 "error: parameters were '$*'"
                die "Provide either a commit or a repository and commit."
        fi
 }