Subject: Re: [PATCH] completion: fix prompt with unset SHOWCONFLICTSTATE in nounset mode

From: Junio C Hamano <[email-masked]>
Date: Mon, 01 Apr 2024 08:31:22 -0700

Ville Skyttä <[email-masked]> writes:

> `GIT_PS1_SHOWCONFLICTSTATE` is a user variable that might not be set,
> causing errors when the shell is in `nounset` mode.
>
> Take into account on access by falling back to an empty string.
>
> Signed-off-by: Ville Skyttä <[email-masked]>
> ---

Obviously a good thing to do.

A related tangent is that

    $ git grep -e '$GIT_PS1' -e '${GIT_PS1_[A-Z0-9_]*}' contrib/completion/

shows a hit for the line with SHOWCONFLICTSTATE, plus two lines with
GIT_PS1_SHOWUPSTREAM that lack the "if unset then use this value".
Do you want to do another patch to fix them, or are they good as-is
for some reason?

Thanks.

>  contrib/completion/git-prompt.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
> index 71f179cba3..3826f52dec 100644
> --- a/contrib/completion/git-prompt.sh
> +++ b/contrib/completion/git-prompt.sh
> @@ -528,7 +528,7 @@ __git_ps1 ()
>  	fi
>  
>  	local conflict="" # state indicator for unresolved conflicts
> -	if [[ "${GIT_PS1_SHOWCONFLICTSTATE}" == "yes" ]] &&
> +	if [[ "${GIT_PS1_SHOWCONFLICTSTATE-}" == "yes" ]] &&
>  	   [[ $(git ls-files --unmerged 2>/dev/null) ]]; then
>  		conflict="|CONFLICT"
>  	fi