Skip to contentSkip to conversation

Show presense of stashed changes in bash prompt.

PATCH In review Daniel Trstenjak 3 participants 5 messages Jun 15, 2016 1 message not in the archive

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Show presense of stashed changes in bash prompt.

Avoid the forgetting of stashed changes by showing them in the bash prompt.

If the presense is shown is configurable by setting GIT_PS1_SHOW_STASH_STATE to a nonempty value.

The code for checking if the stash has entries is
taken from 'git-stash.sh'.

---
 contrib/completion/git-completion.bash |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)
contrib/completion/git-completion.bash +10 -2
index 98b9cbe..ed0c463 100755
@@ -40,6 +40,10 @@
 #       with the bash.showDirtyState variable, which defaults to true
 #       once GIT_PS1_SHOWDIRTYSTATE is enabled.
 #
+#       You can also see if currently something is stashed, by setting
+#       GIT_PS1_SHOW_STASH_STATE to a nonempty value. If something is stashed,
+#       then a '$' will be shown next to the branch name. 
+#
 # To submit patches:
 #
 #    *) Read Documentation/SubmittingPatches
@@ -127,6 +131,7 @@ __git_ps1 ()
 
 		local w
 		local i
+		local s
 		local c
 
 		if [ "true" = "$(git rev-parse --is-inside-git-dir 2>/dev/null)" ]; then
@@ -148,12 +153,15 @@ __git_ps1 ()
 					fi
 				fi
 			fi
+			if [ -n "${GIT_PS1_SHOW_STASH_STATE-}" ]; then
+			        git rev-parse --verify refs/stash >/dev/null 2>&1 && s="$"
+			fi
 		fi
 
 		if [ -n "${1-}" ]; then
-			printf "$1" "$c${b##refs/heads/}$w$i$r"
+			printf "$1" "$c${b##refs/heads/}$w$i$s$r"
 		else
-			printf " (%s)" "$c${b##refs/heads/}$w$i$r"
+			printf " (%s)" "$c${b##refs/heads/}$w$i$s$r"
 		fi
 	fi
 }
Signature · 1 line
1.6.1.2

A message that is not in the archive (sent off-list or not yet received): [email protected]

#2 lore raw
Quoted 9 lines · Junio C Hamano
Quoted 5 lines · Daniel Trstenjak

Avoid the forgetting of stashed changes by showing them in the bash prompt.

If the presense is shown is configurable by setting GIT_PS1_SHOW_STASH_STATE to a nonempty value.

Why am I getting this deja-vu feeling about this patch, I wonder... Is this a re-roll of a previously posted patch?

I don't know... I had a similar deja-vu feeling when I read it.

Quoted 1 line

Shawn?

Initial NAK, see below for the nit.

Quoted 4 lines
Quoted 4 lines
contrib/completion/git-completion.bash +0 -0
index 98b9cbe..ed0c463 100755
Quoted 8 lines

contrib/completion/git-completion.bash line 46

Quoted 8 lines
contrib/completion/git-completion.bash +4 -0
@@ -40,6 +40,10 @@
 #       with the bash.showDirtyState variable, which defaults to true
 #       once GIT_PS1_SHOWDIRTYSTATE is enabled.
 #
+#       You can also see if currently something is stashed, by setting
+#       GIT_PS1_SHOW_STASH_STATE to a nonempty value. If something is stashed,
+#       then a '$' will be shown next to the branch name. 
+#

Can we call this GIT_PS1_SHOWSTASHSTATE to match the already present GIT_PS1_SHOWDIRTYSTATE in at least style formatting?

The bike shed already sailed... GIT_PS1_SHOWDIRTYSTATE shipped in 1.6.3. Lets keep the same style.

Otherwise it looks fine to me, when you resend you can add my

Signature · 1 line
Shawn.
author Acked-by Shawn O. Pearce
#3 lore raw

Avoid the forgetting of stashed changes by showing them in the bash prompt.

If the presense is shown is configurable by setting GIT_PS1_SHOWSTASHSTATE to a nonempty value.

The code for checking if the stash has entries is taken from 'git-stash.sh'.

---
 contrib/completion/git-completion.bash |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)
contrib/completion/git-completion.bash +10 -2
index 98b9cbe..c4ae423 100755
@@ -40,6 +40,10 @@
 #       with the bash.showDirtyState variable, which defaults to true
 #       once GIT_PS1_SHOWDIRTYSTATE is enabled.
 #
+#       You can also see if currently something is stashed, by setting
+#       GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
+#       then a '$' will be shown next to the branch name. 
+#
 # To submit patches:
 #
 #    *) Read Documentation/SubmittingPatches
@@ -127,6 +131,7 @@ __git_ps1 ()
 
 		local w
 		local i
+		local s
 		local c
 
 		if [ "true" = "$(git rev-parse --is-inside-git-dir 2>/dev/null)" ]; then
@@ -148,12 +153,15 @@ __git_ps1 ()
 					fi
 				fi
 			fi
+			if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ]; then
+			        git rev-parse --verify refs/stash >/dev/null 2>&1 && s="$"
+			fi
 		fi
 
 		if [ -n "${1-}" ]; then
-			printf "$1" "$c${b##refs/heads/}$w$i$r"
+			printf "$1" "$c${b##refs/heads/}$w$i$s$r"
 		else
-			printf " (%s)" "$c${b##refs/heads/}$w$i$r"
+			printf " (%s)" "$c${b##refs/heads/}$w$i$s$r"
 		fi
 	fi
 }
Signature · 1 line
1.6.1.2
#4 lore raw
Quoted 2 lines · Daniel Trstenjak

If the presense is shown is configurable by setting GIT_PS1_SHOWSTASHSTATE to a nonempty value.

_presence_

Signature · 3 lines
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git