git-prompt.sh: don't assume the shell expands the value of PS1
Not all shells subject the prompt string to parameter expansion. Test
whether the shell will expand the value of PS1, and use the result to
control whether raw ref names are included directly in PS1.
This fixes a regression introduced in commit 8976500
("git-prompt.sh:
don't put unsanitized branch names in $PS1"): zsh does not expand PS1
by default, but that commit assumed it did. The bug resulted in
prompts containing the literal string '${__git_ps1_branch_name}'
instead of the actual branch name.
Reported-by: Caleb Thompson <caleb@calebthompson.io>
Signed-off-by: Richard Hansen <rhansen@bbn.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
8976500cbb
commit
1e4119c81b
@ -578,12 +578,12 @@ test_expect_success 'prompt - bash color pc mode - untracked files status indica
|
||||
'
|
||||
|
||||
test_expect_success 'prompt - zsh color pc mode' '
|
||||
printf "BEFORE: (%%F{green}\${__git_ps1_branch_name}%%f):AFTER\\nmaster" >expected &&
|
||||
printf "BEFORE: (%%F{green}master%%f):AFTER" >expected &&
|
||||
(
|
||||
ZSH_VERSION=5.0.0 &&
|
||||
GIT_PS1_SHOWCOLORHINTS=y &&
|
||||
__git_ps1 "BEFORE:" ":AFTER" >"$actual"
|
||||
printf "%s\\n%s" "$PS1" "${__git_ps1_branch_name}" >"$actual"
|
||||
__git_ps1 "BEFORE:" ":AFTER" &&
|
||||
printf "%s" "$PS1" >"$actual"
|
||||
) &&
|
||||
test_cmp expected "$actual"
|
||||
'
|
||||
|
Reference in New Issue
Block a user