# __git_ps1 not showing submodule dirty state

3 messages from 2009-12-30 to 2009-12-31. Participants: Kevin Ballard, Johan Herland, Thomas Rast.
Thread: https://gitlist.dev/t/22067

## Kevin Ballard, 2009-12-30 21:46

Subject: __git_ps1 not showing submodule dirty state
Message-ID: <A98B75F4-B9BD-4CB4-9335-754C59ECB64F@sb.org>
URL: https://gitlist.dev/e/A98B75F4-B9BD-4CB4-9335-754C59ECB64F%40sb.org

```
Why does the __git_ps1 function in git-completion.bash explicitly ignore submodules when showing the GIT_PS1_SHOWDIRTYSTATE status? The most common issue with my current repository is not realizing when submodules need to be updated because I blindly trust my prompt to tell me when I have dirty state.

-Kevin Ballard
```

## Johan Herland, 2009-12-31 01:40

Subject: Re: __git_ps1 not showing submodule dirty state
Message-ID: <200912310240.07741.johan@herland.net>
URL: https://gitlist.dev/e/200912310240.07741.johan%40herland.net
In-Reply-To: <A98B75F4-B9BD-4CB4-9335-754C59ECB64F@sb.org>

```
On Wednesday 30 December 2009, Kevin Ballard wrote:
> Why does the __git_ps1 function in git-completion.bash explicitly ignore
>  submodules when showing the GIT_PS1_SHOWDIRTYSTATE status? The most
>  common issue with my current repository is not realizing when submodules
>  need to be updated because I blindly trust my prompt to tell me when I
>  have dirty state.

According to git blame, it has been there since GIT_PS1_SHOWDIRTYSTATE was 
introduced in 738a94a... by Thomas Rast (CCed), but the commit message does 
not say why submodules are explicitly ignored.

FWIW, I agree with Kevin, and would like changed submodules to be included 
in the status.


...Johan

-- 
Johan Herland, <johan@herland.net>
www.herland.net

```

## Thomas Rast, 2009-12-31 11:48

Subject: [PATCH] bash completion: factor submodules into dirty state
Message-ID: <9108ae77c6551363407265de60c7f1def3fe60f0.1262259747.git.trast@student.ethz.ch>
URL: https://gitlist.dev/e/9108ae77c6551363407265de60c7f1def3fe60f0.1262259747.git.trast%40student.ethz.ch
In-Reply-To: <200912310240.07741.johan@herland.net>

```
In the implementation of GIT_PS1_SHOWDIRTYSTATE in 738a94a (bash:
offer to show (un)staged changes, 2009-02-03), I cut&pasted the
git-diff invocations from dirty-worktree checks elsewhere, carrying
along the --ignore-submodules option.

As pointed out by Kevin Ballard, this doesn't really make sense: to
the _user_, a changed submodule counts towards uncommitted changes.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---

Johan Herland wrote:
> On Wednesday 30 December 2009, Kevin Ballard wrote:
> > Why does the __git_ps1 function in git-completion.bash explicitly ignore
> >  submodules when showing the GIT_PS1_SHOWDIRTYSTATE status? The most
> >  common issue with my current repository is not realizing when submodules
> >  need to be updated because I blindly trust my prompt to tell me when I
> >  have dirty state.
> 
> According to git blame, it has been there since GIT_PS1_SHOWDIRTYSTATE was 
> introduced in 738a94a... by Thomas Rast (CCed), but the commit message does 
> not say why submodules are explicitly ignored.
> 
> FWIW, I agree with Kevin, and would like changed submodules to be included 
> in the status.

No good reason; I really do remember cut&pasting the checks, though
I'm not sure from where.

I don't really use submodules, so I'll just trust your judgements that
it's better to factor them into the status.


 contrib/completion/git-completion.bash |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index c65462c..a455fe8 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -142,11 +142,9 @@ __git_ps1 ()
 		elif [ "true" = "$(git rev-parse --is-inside-work-tree 2>/dev/null)" ]; then
 			if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ]; then
 				if [ "$(git config --bool bash.showDirtyState)" != "false" ]; then
-					git diff --no-ext-diff --ignore-submodules \
-						--quiet --exit-code || w="*"
+					git diff --no-ext-diff --quiet --exit-code || w="*"
 					if git rev-parse --quiet --verify HEAD >/dev/null; then
-						git diff-index --cached --quiet \
-							--ignore-submodules HEAD -- || i="+"
+						git diff-index --cached --quiet HEAD -- || i="+"
 					else
 						i="#"
 					fi
-- 
1.6.6.337.g4932e

```
