diff options
author | Tony Finch <dot@dotat.at> | 2014-12-22 18:09:25 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-12-22 11:58:56 -0800 |
commit | eb443e3b39482b3d64c1efd46de7481c3321a87a (patch) | |
tree | e188f042bdcf11e590d26edc018059363d365ec2 | |
parent | clean: typofix (diff) | |
download | tgif-eb443e3b39482b3d64c1efd46de7481c3321a87a.tar.xz |
git-prompt: preserve value of $? inside shell prompt
If you have a prompt which displays the command exit status,
__git_ps1 without this change corrupts it, although it has
the correct value in the parent shell:
~/src/git (master) 0 $ set | grep ^PS1
PS1='\w$(__git_ps1) $? \$ '
~/src/git (master) 0 $ false
~/src/git (master) 0 $ echo $?
1
~/src/git (master) 0 $
There is a slightly ugly workaround:
~/src/git (master) 0 $ set | grep ^PS1
PS1='\w$(x=$?; __git_ps1; exit $x) $? \$ '
~/src/git (master) 0 $ false
~/src/git (master) 1 $
This change makes the workaround unnecessary.
Signed-off-by: Tony Finch <dot@dotat.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | contrib/completion/git-prompt.sh | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh index c5473dc8db..5fe69d046f 100644 --- a/contrib/completion/git-prompt.sh +++ b/contrib/completion/git-prompt.sh @@ -288,6 +288,7 @@ __git_eread () # In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true __git_ps1 () { + local exit=$? local pcmode=no local detached=no local ps1pc_start='\u@\h:\w ' @@ -511,4 +512,7 @@ __git_ps1 () else printf -- "$printf_format" "$gitstring" fi + + # preserve exit status + return $exit } |