On 2014-10-15 00:06, Jess Austin wrote: > @@ -501,6 +506,13 @@ __git_ps1 () > local f="$w$i$s$u" > local gitstring="$c$b${f:+$z$f}$r$p" > > + if [ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED}" ] && > + [ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] && > + git check-ignore -q . > + then > + printf_format="" > + fi > + > if [ $pcmode = yes ]; then > if [ "${__git_printf_supports_v-}" != yes ]; then > gitstring=$(printf -- "$printf_format" "$gitstring") This is broken in pcmode due to a Bash bug. The command: printf -v foo "" asdf is a no-op in Bash. The variable foo is never changed in any way -- it is neither unset nor set to the empty string. Also, I noticed that I get an error message if I cd into .git: fatal: This operation must be run in a work tree I think the following change will fix the above issues, and it has the advantage of avoiding unnecessary work if the directory is ignored: diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh index 6a4ce53..68ac82a 100644 --- a/contrib/completion/git-prompt.sh +++ b/contrib/completion/git-prompt.sh @@ -374,6 +374,17 @@ __git_ps1 () local inside_gitdir="${repo_info##*$'\n'}" local g="${repo_info%$'\n'*}" + if [ "true" = "$inside_worktree" ] && + [ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED}" ] && + [ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] && + git check-ignore -q . + then + if [ $pcmode = yes ]; then + PS1="$ps1pc_start$ps1pc_end" + fi + return + fi + local r="" local b="" local step="" @@ -506,13 +517,6 @@ __git_ps1 () local f="$w$i$s$u" local gitstring="$c$b${f:+$z$f}$r$p" - if [ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED}" ] && - [ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] && - git check-ignore -q . - then - printf_format="" - fi - if [ $pcmode = yes ]; then if [ "${__git_printf_supports_v-}" != yes ]; then gitstring=$(printf -- "$printf_format" "$gitstring") It would be good to add additional test cases for pcmode (two or three arguments to __git_ps1) and 'cd .git' so that the above issues don't reappear. Thanks, Richard -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html