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>
This commit is contained in:
parent
bef111d0a5
commit
eb443e3b39
@ -288,6 +288,7 @@ __git_eread ()
|
|||||||
# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
|
# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
|
||||||
__git_ps1 ()
|
__git_ps1 ()
|
||||||
{
|
{
|
||||||
|
local exit=$?
|
||||||
local pcmode=no
|
local pcmode=no
|
||||||
local detached=no
|
local detached=no
|
||||||
local ps1pc_start='\u@\h:\w '
|
local ps1pc_start='\u@\h:\w '
|
||||||
@ -511,4 +512,7 @@ __git_ps1 ()
|
|||||||
else
|
else
|
||||||
printf -- "$printf_format" "$gitstring"
|
printf -- "$printf_format" "$gitstring"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# preserve exit status
|
||||||
|
return $exit
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user