summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaio Romão <caioromao@gmail.com>2012-07-29 20:18:26 +0200
committerCaio Romão <caioromao@gmail.com>2012-07-29 20:18:26 +0200
commita3c2a2f6e8ff9db508070a905de056346386ef4f (patch)
treec4b02bcd886f6d01c13b20c10057af51c3b729f8
parentd05b2010ffd4cd33ff9402c402051b1caf985d97 (diff)
downloadzsh-a3c2a2f6e8ff9db508070a905de056346386ef4f.tar.gz
zsh-a3c2a2f6e8ff9db508070a905de056346386ef4f.tar.bz2
zsh-a3c2a2f6e8ff9db508070a905de056346386ef4f.zip
Add branch status support to git_prompt_status
This patch makes git_prompt_status support three new status variables: - ZSH_THEME_GIT_PROMPT_AHEAD - ZSH_THEME_GIT_PROMPT_BEHIND - ZSH_THEME_GIT_PROMPT_DIVERGED With these extra variables it's easy to see (1) if you have commits in your local branch that weren't pushed to the remote (AHEAD), (2) if there are commits in the remote that you haven't merged/rebased yet (BEHIND) or (3) if you have local unpushed commits AND the remote has some commits you haven't merged yet (DIVERGED). Refer to the first line displayed on `git status -b --porcelain`. An example setup in a .zsh-theme file would be: ZSH_THEME_GIT_PROMPT_AHEAD="↑" ZSH_THEME_GIT_PROMPT_BEHIND="↓" ZSH_THEME_GIT_PROMPT_DIVERGED="↕"
-rw-r--r--lib/git.zsh11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/git.zsh b/lib/git.zsh
index fb4ad8ca6..bca8bdc96 100644
--- a/lib/git.zsh
+++ b/lib/git.zsh
@@ -38,7 +38,7 @@ function git_prompt_long_sha() {
# Get the status of the working tree
git_prompt_status() {
- INDEX=$(git status --porcelain 2> /dev/null)
+ INDEX=$(git status --porcelain -b 2> /dev/null)
STATUS=""
if $(echo "$INDEX" | grep '^?? ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS"
@@ -66,6 +66,15 @@ git_prompt_status() {
if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS"
fi
+ if $(echo "$INDEX" | grep '^## .*ahead' &> /dev/null); then
+ STATUS="$ZSH_THEME_GIT_PROMPT_AHEAD$STATUS"
+ fi
+ if $(echo "$INDEX" | grep '^## .*behind' &> /dev/null); then
+ STATUS="$ZSH_THEME_GIT_PROMPT_BEHIND$STATUS"
+ fi
+ if $(echo "$INDEX" | grep '^## .*diverged' &> /dev/null); then
+ STATUS="$ZSH_THEME_GIT_PROMPT_DIVERGED$STATUS"
+ fi
echo $STATUS
}