git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH 1/2] git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha
@ 2016-06-06 16:29 Ville Skyttä
  2016-06-06 20:08 ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Ville Skyttä @ 2016-06-06 16:29 UTC (permalink / raw)
  To: git

When the shell is in "nounset" or "set -u" mode, referencing unset or
null variables results in an error. Protect $ZSH_VERSION and
$BASH_VERSION against that, and initialize $short_sha before use.

Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
---
 contrib/completion/git-prompt.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index 64219e6..97eacd7 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -355,8 +355,8 @@ __git_ps1 ()
 	# incorrect.)
 	#
 	local ps1_expanded=yes
-	[ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
-	[ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no
+	[ -z "${ZSH_VERSION-}" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
+	[ -z "${BASH_VERSION-}" ] || shopt -q promptvars || ps1_expanded=no
 
 	local repo_info rev_parse_exit_code
 	repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
@@ -368,7 +368,7 @@ __git_ps1 ()
 		return $exit
 	fi
 
-	local short_sha
+	local short_sha=""
 	if [ "$rev_parse_exit_code" = "0" ]; then
 		short_sha="${repo_info##*$'\n'}"
 		repo_info="${repo_info%$'\n'*}"
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha
@ 2016-06-06 16:33 Ville Skyttä
  0 siblings, 0 replies; 4+ messages in thread
From: Ville Skyttä @ 2016-06-06 16:33 UTC (permalink / raw)
  To: git

On Mon, Jun 6, 2016 at 7:29 PM, Ville Skyttä <ville.skytta@iki.fi> wrote:
> When the shell is in "nounset" or "set -u" mode, referencing unset or
> null variables results in an error. Protect $ZSH_VERSION and
> $BASH_VERSION against that, and initialize $short_sha before use.

No part 2/2 will be coming, 1/2 is all there is to this change, sorry
about the confusion.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha
  2016-06-06 16:29 Ville Skyttä
@ 2016-06-06 20:08 ` Junio C Hamano
  2016-06-07  5:22   ` Ville Skyttä
  0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2016-06-06 20:08 UTC (permalink / raw)
  To: Ville Skyttä; +Cc: git

Ville Skyttä <ville.skytta@iki.fi> writes:

> When the shell is in "nounset" or "set -u" mode, referencing unset or
> null variables results in an error. Protect $ZSH_VERSION and
> $BASH_VERSION against that, and initialize $short_sha before use.
>
> Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
> ---

Thanks for following up.  I do not run my interactive shells with
"set -u", so I never noticed these, but apparently you do (or you
know who does)--does this patch cover everything that is not "-u"
safe?

Will queue.

>  contrib/completion/git-prompt.sh | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
> index 64219e6..97eacd7 100644
> --- a/contrib/completion/git-prompt.sh
> +++ b/contrib/completion/git-prompt.sh
> @@ -355,8 +355,8 @@ __git_ps1 ()
>  	# incorrect.)
>  	#
>  	local ps1_expanded=yes
> -	[ -z "$ZSH_VERSION" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
> -	[ -z "$BASH_VERSION" ] || shopt -q promptvars || ps1_expanded=no
> +	[ -z "${ZSH_VERSION-}" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no
> +	[ -z "${BASH_VERSION-}" ] || shopt -q promptvars || ps1_expanded=no
>  
>  	local repo_info rev_parse_exit_code
>  	repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
> @@ -368,7 +368,7 @@ __git_ps1 ()
>  		return $exit
>  	fi
>  
> -	local short_sha
> +	local short_sha=""
>  	if [ "$rev_parse_exit_code" = "0" ]; then
>  		short_sha="${repo_info##*$'\n'}"
>  		repo_info="${repo_info%$'\n'*}"

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha
  2016-06-06 20:08 ` Junio C Hamano
@ 2016-06-07  5:22   ` Ville Skyttä
  0 siblings, 0 replies; 4+ messages in thread
From: Ville Skyttä @ 2016-06-07  5:22 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Mon, Jun 6, 2016 at 11:08 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Ville Skyttä <ville.skytta@iki.fi> writes:
>
>> When the shell is in "nounset" or "set -u" mode, referencing unset or
>> null variables results in an error. Protect $ZSH_VERSION and
>> $BASH_VERSION against that, and initialize $short_sha before use.
>>
>> Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
>> ---
>
> Thanks for following up.  I do not run my interactive shells with
> "set -u", so I never noticed these, but apparently you do (or you
> know who does)

I don't personally, but some do. The issue pops up every now and then
with bash-completion, e.g.
https://github.com/scop/bash-completion/issues/44

> does this patch cover everything that is not "-u" safe?

I don't know. These were the low hanging fruits I've come across. Null
$ZSH_VERSION in git-prompt.sh was the thing I ran into immediately
when enabling "nounset" mode to start looking into the above
bash-completion issue. Quick testing with zsh revealed the same issue
with null $BASH_VERSION, and you found the $short_sha one.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-06-07  5:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-06 16:33 [PATCH 1/2] git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha Ville Skyttä
  -- strict thread matches above, loose matches on Subject: below --
2016-06-06 16:29 Ville Skyttä
2016-06-06 20:08 ` Junio C Hamano
2016-06-07  5:22   ` Ville Skyttä

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).