From: Junio C Hamano Date: Wed, 14 Jan 2015 20:34:01 +0000 (-0800) Subject: Merge branch 'rh/hide-prompt-in-ignored-directory' X-Git-Tag: v2.3.0-rc1~15 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/e1ef7d177c3fcfdd25df9c4b67d36012bedebd74?ds=inline;hp=-c Merge branch 'rh/hide-prompt-in-ignored-directory' * rh/hide-prompt-in-ignored-directory: git-prompt.sh: allow to hide prompt for ignored pwd git-prompt.sh: if pc mode, immediately set PS1 to a plain prompt --- e1ef7d177c3fcfdd25df9c4b67d36012bedebd74 diff --combined contrib/completion/git-prompt.sh index 3c3fc6d5d9,75c3f0f4ea..c0f62b54d4 --- a/contrib/completion/git-prompt.sh +++ b/contrib/completion/git-prompt.sh @@@ -84,6 -84,11 +84,11 @@@ # GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on # the colored output of "git status -sb" and are available only when # using __git_ps1 for PROMPT_COMMAND or precmd. + # + # If you would like __git_ps1 to do nothing in the case when the current + # directory is set up to be ignored by git, then set + # GIT_PS1_HIDE_IF_PWD_IGNORED to a nonempty value. Override this on the + # repository level by setting bash.hideIfPwdIgnored to "false". # check whether printf supports -v __git_printf_supports_v= @@@ -288,7 -293,6 +293,7 @@@ __git_eread ( # In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true __git_ps1 () { + local exit=$? local pcmode=no local detached=no local ps1pc_start='\u@\h:\w ' @@@ -300,6 -304,10 +305,10 @@@ ps1pc_start="$1" ps1pc_end="$2" printf_format="${3:-$printf_format}" + # set PS1 to a plain prompt so that we can + # simply return early if the prompt should not + # be decorated + PS1="$ps1pc_start$ps1pc_end" ;; 0|1) printf_format="${1:-$printf_format}" ;; @@@ -351,10 -359,6 +360,6 @@@ rev_parse_exit_code="$?" if [ -z "$repo_info" ]; then - if [ $pcmode = yes ]; then - #In PC mode PS1 always needs to be set - PS1="$ps1pc_start$ps1pc_end" - fi return fi @@@ -370,6 -374,14 +375,14 @@@ 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 + return + fi + local r="" local b="" local step="" @@@ -413,9 -425,6 +426,6 @@@ else local head="" if ! __git_eread "$g/HEAD" head; then - if [ $pcmode = yes ]; then - PS1="$ps1pc_start$ps1pc_end" - fi return fi # is it a symbolic ref? @@@ -512,7 -521,4 +522,7 @@@ else printf -- "$printf_format" "$gitstring" fi + + # preserve exit status + return $exit }