* contrib/completion/git-completion.bash: declare -g is not portable @ 2018-02-03 17:20 Torsten Bögershausen 2018-02-03 19:51 ` Andreas Schwab 2018-02-04 9:45 ` Duy Nguyen 0 siblings, 2 replies; 6+ messages in thread From: Torsten Bögershausen @ 2018-02-03 17:20 UTC (permalink / raw) To: Nguyen Thai Ngoc Duy, Git Mailing List Hej Duy, After running t9902-completion.sh on Mac OS I got a failure in this style: .../projects/git/git.pu/t/../contrib/completion/git-completion.bash: line 300: declare: -g: invalid option declare: usage: declare [-afFirtx] [-p] [name[=value] ...] --- expected 2018-02-03 17:10:18.000000000 +0000 +++ out 2018-02-03 17:10:18.000000000 +0000 @@ -1,15 +1,2 @@ ---quiet ---detach ---track ---orphan= ---ours ---theirs ---merge ---conflict= ---patch ---ignore-skip-worktree-bits ---ignore-other-worktrees ---recurse-submodules ---progress --no-track --no-recurse-submodules not ok 92 - double dash "git checkout" What is "declare -g" good for ? <https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html#index-declare> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: contrib/completion/git-completion.bash: declare -g is not portable 2018-02-03 17:20 contrib/completion/git-completion.bash: declare -g is not portable Torsten Bögershausen @ 2018-02-03 19:51 ` Andreas Schwab 2018-02-03 20:22 ` Jeff King 2018-02-04 9:45 ` Duy Nguyen 1 sibling, 1 reply; 6+ messages in thread From: Andreas Schwab @ 2018-02-03 19:51 UTC (permalink / raw) To: Torsten Bögershausen; +Cc: Nguyen Thai Ngoc Duy, Git Mailing List On Feb 03 2018, Torsten Bögershausen <tboegi@web.de> wrote: > What is "declare -g" good for ? -g create global variables when used in a shell function; otherwise ignored When used in a function, `declare' makes NAMEs local, as with the `local' command. The `-g' option suppresses this behavior. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: contrib/completion/git-completion.bash: declare -g is not portable 2018-02-03 19:51 ` Andreas Schwab @ 2018-02-03 20:22 ` Jeff King 0 siblings, 0 replies; 6+ messages in thread From: Jeff King @ 2018-02-03 20:22 UTC (permalink / raw) To: Andreas Schwab Cc: Torsten Bögershausen, Nguyen Thai Ngoc Duy, Git Mailing List On Sat, Feb 03, 2018 at 08:51:16PM +0100, Andreas Schwab wrote: > On Feb 03 2018, Torsten Bögershausen <tboegi@web.de> wrote: > > > What is "declare -g" good for ? > > -g create global variables when used in a shell function; otherwise > ignored > > When used in a function, `declare' makes NAMEs local, as with the `local' > command. The `-g' option suppresses this behavior. I think the bigger question is why one would use "declare -g" instead of just assigning the variable with "var=value". Glancing at the code, I suspect it is because the name of the variable itself needs expanded. If that's the case, we could use eval instead, like: diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 3cc815be0d..204d620ff7 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -297,7 +297,7 @@ __gitcomp_builtin () eval "options=\$$var" if [ -z "$options" ]; then - declare -g "$var=$(__git ${cmd/_/ } --git-completion-helper)" + eval "$var=\$(__git \${cmd/_/ } --git-completion-helper)" eval "options=\$$var" fi -Peff ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: contrib/completion/git-completion.bash: declare -g is not portable 2018-02-03 17:20 contrib/completion/git-completion.bash: declare -g is not portable Torsten Bögershausen 2018-02-03 19:51 ` Andreas Schwab @ 2018-02-04 9:45 ` Duy Nguyen 2018-02-04 9:57 ` Eric Sunshine 1 sibling, 1 reply; 6+ messages in thread From: Duy Nguyen @ 2018-02-04 9:45 UTC (permalink / raw) To: Torsten Bögershausen; +Cc: Git Mailing List On Sun, Feb 4, 2018 at 12:20 AM, Torsten Bögershausen <tboegi@web.de> wrote: > Hej Duy, > After running t9902-completion.sh on Mac OS I got a failure > in this style: Sorry I was new with this bash thingy. Jeff already answered this (and I will fix it in the re-roll) but just for my own information, what bash version is shipped with Mac OS? -- Duy ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: contrib/completion/git-completion.bash: declare -g is not portable 2018-02-04 9:45 ` Duy Nguyen @ 2018-02-04 9:57 ` Eric Sunshine 2018-02-04 11:48 ` Lucas Werkmeister 0 siblings, 1 reply; 6+ messages in thread From: Eric Sunshine @ 2018-02-04 9:57 UTC (permalink / raw) To: Duy Nguyen; +Cc: Torsten Bögershausen, Git Mailing List On Sun, Feb 4, 2018 at 4:45 AM, Duy Nguyen <pclouds@gmail.com> wrote: > On Sun, Feb 4, 2018 at 12:20 AM, Torsten Bögershausen <tboegi@web.de> wrote: >> After running t9902-completion.sh on Mac OS I got a failure >> in this style: > > Sorry I was new with this bash thingy. Jeff already answered this (and > I will fix it in the re-roll) but just for my own information, what > bash version is shipped with Mac OS? The MacOS bash is very old; note the copyright date: % /bin/bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16) Copyright (C) 2007 Free Software Foundation, Inc. A recent bash installed manually (not from Apple): % /usr/local/bin/bash --version GNU bash, version 4.4.18(1)-release (x86_64-apple-darwin16.7.0) Copyright (C) 2016 Free Software Foundation, Inc. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: contrib/completion/git-completion.bash: declare -g is not portable 2018-02-04 9:57 ` Eric Sunshine @ 2018-02-04 11:48 ` Lucas Werkmeister 0 siblings, 0 replies; 6+ messages in thread From: Lucas Werkmeister @ 2018-02-04 11:48 UTC (permalink / raw) To: Eric Sunshine, Duy Nguyen; +Cc: Torsten Bögershausen, Git Mailing List [-- Attachment #1: Type: text/plain, Size: 1184 bytes --] On 04.02.2018 10:57, Eric Sunshine wrote: > On Sun, Feb 4, 2018 at 4:45 AM, Duy Nguyen <pclouds@gmail.com> wrote: >> On Sun, Feb 4, 2018 at 12:20 AM, Torsten Bögershausen <tboegi@web.de> wrote: >>> After running t9902-completion.sh on Mac OS I got a failure >>> in this style: >> >> Sorry I was new with this bash thingy. Jeff already answered this (and >> I will fix it in the re-roll) but just for my own information, what >> bash version is shipped with Mac OS? > > The MacOS bash is very old; note the copyright date: > > % /bin/bash --version > GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16) > Copyright (C) 2007 Free Software Foundation, Inc. > > A recent bash installed manually (not from Apple): > > % /usr/local/bin/bash --version > GNU bash, version 4.4.18(1)-release (x86_64-apple-darwin16.7.0) > Copyright (C) 2016 Free Software Foundation, Inc. > Specifically, Apple ships the latest version of Bash 3.x, which is the last version published under the GPLv2+ – Bash 4.x switched to GPLv3+. Users can install newer Bash versions themselves, e. g. using Homebrew, but that doesn’t help us here. [-- Attachment #2: S/MIME Cryptographic Signature --] [-- Type: application/pkcs7-signature, Size: 4165 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-02-04 11:48 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-02-03 17:20 contrib/completion/git-completion.bash: declare -g is not portable Torsten Bögershausen 2018-02-03 19:51 ` Andreas Schwab 2018-02-03 20:22 ` Jeff King 2018-02-04 9:45 ` Duy Nguyen 2018-02-04 9:57 ` Eric Sunshine 2018-02-04 11:48 ` Lucas Werkmeister
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).