From mboxrd@z Thu Jan 1 00:00:00 1970 From: Richard Hansen Subject: Re: [PATCH] git-prompt.sh: Omit prompt for ignored directories Date: Wed, 08 Oct 2014 17:12:07 -0400 Message-ID: <5435A8A7.2030008@bbn.com> References: <1412795040-19267-1-git-send-email-jess.austin@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8BIT Cc: szeder@ira.uka.de To: Jess Austin , git@vger.kernel.org X-From: git-owner@vger.kernel.org Wed Oct 08 23:12:17 2014 Return-path: Envelope-to: gcvg-git-2@plane.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XbyWu-0005VE-UE for gcvg-git-2@plane.gmane.org; Wed, 08 Oct 2014 23:12:17 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753539AbaJHVMM (ORCPT ); Wed, 8 Oct 2014 17:12:12 -0400 Received: from smtp.bbn.com ([128.33.1.81]:55362 "EHLO smtp.bbn.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753396AbaJHVML convert rfc822-to-8bit (ORCPT ); Wed, 8 Oct 2014 17:12:11 -0400 Received: from socket.bbn.com ([192.1.120.102]:51626) by smtp.bbn.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.77 (FreeBSD)) (envelope-from ) id 1XbyX1-000FZ7-2g; Wed, 08 Oct 2014 17:12:23 -0400 X-Submitted: to socket.bbn.com (Postfix) with ESMTPSA id D04C64089A User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.2 In-Reply-To: <1412795040-19267-1-git-send-email-jess.austin@gmail.com> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org 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 > --- > 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 >