On 2014-10-08 15:04, Jess Austin wrote:
> Introduce a new environmental variable, GIT_PS1_OMITIGNORED, which
> tells __git_ps1 to display nothing when the current directory is
> set (e.g. via .gitignore) to be ignored by git. In the absence of
> GIT_PS1_OMITIGNORED this change has no effect.
> 
> Many people manage e.g. dotfiles in their home directory with git.
> This causes the prompt generated by __git_ps1 to refer to that "top
> level" repo while working in any descendant directory. That can be
> distracting, so this patch helps one shut off that noise.

Interesting idea, though I would prefer this to be configurable on a
per-repository basis.  (I wouldn't want to hide the prompt in any
repository besides my home repository.)

I'm not a big fan of the name "OMITIGNORED" (it's not immediately
obvious what this means), but I can't think of anything better off the
top of my head...

-Richard


> 
> Signed-off-by: Jess Austin <[email protected]>
> ---
>  contrib/completion/git-prompt.sh |  9 +++++++++
>  t/t9903-bash-prompt.sh           | 21 +++++++++++++++++++++
>  2 files changed, 30 insertions(+)
> 
> diff --git a/contrib/completion/git-prompt.sh 
> b/contrib/completion/git-prompt.sh
> index c5473dc..6a26cb4 100644
> --- a/contrib/completion/git-prompt.sh
> +++ b/contrib/completion/git-prompt.sh
> @@ -84,6 +84,10 @@
>  # 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_OMITIGNORED
> +# to a nonempty value.
>  
>  # check whether printf supports -v
>  __git_printf_supports_v=
> @@ -501,6 +505,11 @@ __git_ps1 ()
>       local f="$w$i$s$u"
>       local gitstring="$c$b${f:+$z$f}$r$p"
>  
> +     if [ -n "$(git check-ignore .)" ] && [ -n "${GIT_PS1_OMITIGNORED}" ]
> +     then
> +             printf_format=""
> +     fi
> +
>       if [ $pcmode = yes ]; then
>               if [ "${__git_printf_supports_v-}" != yes ]; then
>                       gitstring=$(printf -- "$printf_format" "$gitstring")
> diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh
> index 9150984..55bcb6b 100755
> --- a/t/t9903-bash-prompt.sh
> +++ b/t/t9903-bash-prompt.sh
> @@ -35,6 +35,8 @@ test_expect_success 'setup for prompt tests' '
>       git commit -m "another b2" file &&
>       echo 000 >file &&
>       git commit -m "yet another b2" file &&
> +     mkdir ignored_dir &&
> +     echo "ignored_dir/" >> .gitignore &&
>       git checkout master
>  '
>  
> @@ -588,4 +590,23 @@ test_expect_success 'prompt - zsh color pc mode' '
>       test_cmp expected "$actual"
>  '
>  
> +test_expect_success 'prompt - prompt omitted in ignored directory' '
> +     printf "" >expected &&
> +     (
> +             cd ignored_dir &&
> +             GIT_PS1_OMITIGNORED=y &&
> +             __git_ps1 >"$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
> +test_expect_success 'prompt - prompt not omitted without 
> GIT_PS1_OMITIGNORED' '
> +     printf " (master)" >expected &&
> +     (
> +             cd ignored_dir &&
> +             __git_ps1 >"$actual"
> +     ) &&
> +     test_cmp expected "$actual"
> +'
> +
>  test_done
> 

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to