On Wed, Oct 8, 2014 at 4:12 PM, Richard Hansen <rhansen@xxxxxxx> wrote: > > 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.) Sorry my description was unclear. Let's say you have a repo in "~", and another in "~/projects/foo". Also, the file "~/.gitignore" has the line "projects/" in it. In this case, you'd see repo info in your prompt while in "~" or in "~/projects/foo", but not if you were in "~/projects". In that sense, the prompt is not distracting you with the status of the top-level repo when you're not looking at anything in that repo. > > 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... I'm definitely open to suggestions. cheers, Jess ps. sorry for the html before > > Signed-off-by: Jess Austin <jess.austin@xxxxxxxxx> > > --- > > 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html