Merge branch 'vs/prompt-avoid-unset-variable'
authorJunio C Hamano <gitster@pobox.com>
Mon, 27 Jun 2016 16:56:47 +0000 (09:56 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Jun 2016 16:56:47 +0000 (09:56 -0700)
The git-prompt scriptlet (in contrib/) was not friendly with those
who uses "set -u", which has been fixed.

* vs/prompt-avoid-unset-variable:
git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha

1  2 
contrib/completion/git-prompt.sh
index 64219e631ab9babdc9eb78137478bde2c2cabec8,ba599fc4a1bc9210bbf73ae2ff3ed0edb2a96c36..97eacd7832b28377c5e14918ce6bededc55d7d40
@@@ -355,8 -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 \
                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'*}"
                if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
                   [ "$(git config --bool bash.showDirtyState)" != "false" ]
                then
 -                      git diff --no-ext-diff --quiet --exit-code || w="*"
 -                      if [ -n "$short_sha" ]; then
 -                              git diff-index --cached --quiet HEAD -- || i="+"
 -                      else
 +                      git diff --no-ext-diff --quiet || w="*"
 +                      git diff --no-ext-diff --cached --quiet || i="+"
 +                      if [ -z "$short_sha" ] && [ -z "$i" ]; then
                                i="#"
                        fi
                fi
  
                if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
                   [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
 -                 git ls-files --others --exclude-standard --error-unmatch -- ':/*' >/dev/null 2>/dev/null
 +                 git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>/dev/null
                then
                        u="%${ZSH_VERSION+%}"
                fi