summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeonid Volnitsky <Leonid@Volnitsky.com>2012-07-08 18:55:37 +0300
committerLeonid Volnitsky <Leonid@Volnitsky.com>2012-07-08 18:55:37 +0300
commit00a94f5b3dc1cdc7fecf958d33533ebb6cd181e2 (patch)
treea7a491b61bc7d2795116448bc5d8fe34e3726854
parentworkaround for git status --porcelain quoting bug (diff)
downloadgit-prompt-master.tar.gz
git-prompt-master.tar.bz2
git-prompt-master.zip
fixed: filenames with special charsHEADmaster
gsp ?? TTTTTT BBBBBBBBB ?? a b/ ?? "a\"b/" ?? a$b/ ?? a&b/ ?? a'b/ ?? ab/ ?? "a\303\251/" ?? brackets/ ?? ext/ ?? t ?? tttt aaaa init TTTTTT BBBBBBBBB a b/ a"b/ a/ a&b/ a'b/ ab/ aé/ brackets/ ext/ t tttt aaaa /…test/fixtures/_filedir> gsp A "TTTTTT BBBBBBBBB" A "a b/i" A "a\"b/d" A a$b/h A a&b/f A a'b/c A ab/e A "a\303\251/g" A brackets/[x] A brackets/x A ext/ee.e1 A ext/ff.e2 A ext/foo/.gitignore A ext/gg.e1 A ext/hh.e2 A ext/ii.E1 A t A "tttt aaaa" init TTTTTT BBBBBBBBB a b/ a"b/ amaster/ a&b/ a'b/ ab/ aé/ brackets/ ext/ t tttt aaaa /…test/fixtures/_filedir>
-rwxr-xr-xgit-prompt.sh14
1 files changed, 8 insertions, 6 deletions
diff --git a/git-prompt.sh b/git-prompt.sh
index 7acda17..f99a1d0 100755
--- a/git-prompt.sh
+++ b/git-prompt.sh
@@ -455,12 +455,14 @@ parse_git_status() {
eval " $(
git status --porcelain 2>/dev/null |
- sed -n '
- s/^[MARC]. \(.*\)/ added=added; [[ \" ${added_files[*]} \" =~ \1 ]] || added_files[${#added_files[@]}]=\1/p
- s/^.[MAU] \(.*\)/ modified=modified; [[ \" ${modified_files[*]} \" =~ \1 ]] || modified_files[${#modified_files[@]}]=\1/p
- s/^?? \([a-zA-Z_.=:]*\)$/ untracked=untracked; [[ \" ${untracked_files[*]} \" =~ \" \1 \" ]] || untracked_files[${#untracked_files[@]}]=\"\1\"/p
- s/^?? \(.*\)$/ untracked=untracked; [[ \" ${untracked_files[*]} \" =~ \" \1 \" ]] || untracked_files[${#untracked_files[@]}]=\"\1\"/p
- '
+ sed -n '
+ s,^[MARC]. \([^\"][^/]*/\?\).*, added=added; [[ \" ${added_files[@]} \" =~ \" \1 \" ]] || added_files[${#added_files[@]}]=\"\1\",p
+ s,^[MARC]. \"\([^/]\+/\?\).*\"$, added=added; [[ \" ${added_files[@]} \" =~ \" \1 \" ]] || added_files[${#added_files[@]}]=\"\1\",p
+ s,^.[MAU] \([^\"][^/]*/\?\).*, modified=modified; [[ \" ${modified_files[@]} \" =~ \" \1 \" ]] || modified_files[${#modified_files[@]}]=\"\1\",p
+ s,^.[MAU] \"\([^/]\+/\?\).*\"$, modified=modified; [[ \" ${modified_files[@]} \" =~ \" \1 \" ]] || modified_files[${#modified_files[@]}]=\"\1\",p
+ s,^?? \([^\"][^/]*/\?\).*, untracked=untracked; [[ \" ${untracked_files[@]} \" =~ \" \1 \" ]] || untracked_files[${#untracked_files[@]}]=\"\1\",p
+ s,^?? \"\([^/]\+/\?\).*\"$, untracked=untracked; [[ \" ${untracked_files[@]} \" =~ \" \1 \" ]] || untracked_files[${#untracked_files[@]}]=\"\1\",p
+ ' # |tee /dev/tty
)"
if ! grep -q "^ref:" "$git_dir/HEAD" 2>/dev/null; then