Browse Source

git-prompt: fix reading files with windows line endings

If any of the files read by __git_eread have \r\n line endings, read
will only strip \n, leaving \r. This results in an ugly prompt, where
instead of

    user@pc MINGW64 /path/to/repo (BARE:master)

the last parenthesis is printed over the beginning of the prompt like

    )ser@pc MINGW64 /path/to/repo (BARE:master

This patch fixes the issue by changing the internal field separator
variable IFS to $'\r\n' before using the read builtin command.

Note that ANSI-C Quoting/POSIX Quoting ($'...') is supported by bash
as well as zsh, which are the current targets of git-prompt, cf.
contrib/completion/git-prompt.sh.

Signed-off-by: Robert Abel <rabel@robertabel.eu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Robert Abel 7 years ago committed by Junio C Hamano
parent
commit
041fe8fc83
  1. 2
      contrib/completion/git-prompt.sh

2
contrib/completion/git-prompt.sh

@ -283,7 +283,7 @@ __git_ps1_colorize_gitstring () @@ -283,7 +283,7 @@ __git_ps1_colorize_gitstring ()
# variable, in that order.
__git_eread ()
{
test -r "$1" && read "$2" <"$1"
test -r "$1" && IFS=$'\r\n' read "$2" <"$1"
}

# __git_ps1 accepts 0 or 1 arguments (i.e., format string)

Loading…
Cancel
Save