]> git.phdru.name Git - dotfiles.git/blobdiff - admin/prog/bash_prompt
.shellrc: Use `__git_ps1` if available
[dotfiles.git] / admin / prog / bash_prompt
index 7c6117ce49aee8e58262d395b2b85ac2e61c15f0..f3575b397e4d6806f7e96f89d64dc03358dd4257 100644 (file)
@@ -25,7 +25,7 @@ short_curdir() {
 
 # bash_prompt; adapted from
 # https://github.com/necolas/dotfiles/blob/master/shell/bash_prompt and
-# http://vitus-wagner.livejournal.com/1176589.html?thread=40146189#t40146189
+# https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh
 
 prompt_git() {
     local s=""
@@ -47,12 +47,12 @@ prompt_git() {
 
             # check for unstaged changes
             if [ -n "$(git ls-files --modified)" ]; then
-                s="$s!";
+                s="$s*";
             fi
 
             # check for untracked files
             if [ -n "$(git ls-files --others --exclude-standard)" ]; then
-                s="$s?";
+                s="$s%";
             fi
 
             # check for stashed files
@@ -70,10 +70,23 @@ prompt_git() {
                       printf "(unknown)")"
 
         [ -n "$s" ] && s=" [$s]"
-        printf "%s" "$branchName$s "
+        printf " (%s)" "$branchName$s"
     fi
 }
 
+if test -x /usr/bin/git >/dev/null 2>&1; then
+   if [ "`type -t __git_ps1`" != function ]; then
+      git_sh_prompt=`git --exec-path`/git-sh-prompt
+      test -r $git_sh_prompt && . $git_sh_prompt || :
+   fi
+   if [ "`type -t __git_ps1`" = function ]; then
+      GIT_PS1_SHOWDIRTYSTATE=true
+      GIT_PS1_SHOWSTASHSTATE=true
+      GIT_PS1_SHOWUNTRACKEDFILES=true
+      GIT_PS1_SHOWUPSTREAM=verbose
+   fi
+fi
+
 set_prompts() {
       OPS1=''
       # display the user, host and current working directory
@@ -95,8 +108,14 @@ set_prompts() {
       esac
 
    OPS1+="${debian_chroot:+($debian_chroot)}"
-   OPS1+="\`cgmem_which_prompt\`\u@\${HOSTNAME::5}:\`short_curdir\` "
-   OPS1+="\$(prompt_git)"
-   OPS1+="\\$\$SHLVL "
+   OPS1+="\`cgmem_which_prompt\`\u@\${HOSTNAME::5}:\`short_curdir\`"
+   if test -x /usr/bin/git >/dev/null 2>&1; then
+      if [ "`type -t __git_ps1`" = function ]; then
+         OPS1+="\$(__git_ps1)"
+      else
+         OPS1+="\$(prompt_git)"
+      fi
+   fi
+   OPS1+=" \\$\$SHLVL "
    export OPS1
 }