* 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.