Skip to content

Commit

Permalink
Added new function git_remote_status to check if we are ahead, behind…
Browse files Browse the repository at this point in the history
… or diverged from the remote branch
  • Loading branch information
loopj committed Mar 20, 2011
1 parent 52df854 commit 2d5412e
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions lib/git.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ function git_prompt_info() {
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
}

# get dirty status of the current working tree
parse_git_dirty () {
if [[ -n $(git status -s 2> /dev/null) ]]; then
echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
Expand All @@ -12,6 +13,26 @@ parse_git_dirty () {
fi
}

# get the difference between the local and remote branches
git_remote_status() {
remote=${$(git rev-parse --verify ${hook_com[branch]}@{upstream} --symbolic-full-name 2>/dev/null)/refs\/remotes\/}
if [[ -n ${remote} ]] ; then
ahead=$(git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l)
behind=$(git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l)

if [ $ahead -eq 0 ] && [ $behind -gt 0 ]
then
echo "$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE"
elif [ $ahead -gt 0 ] && [ $behind -eq 0 ]
then
echo "$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE"
elif [ $ahead -gt 0 ] && [ $behind -gt 0 ]
then
echo "$ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE"
fi
fi
}

# get the status of the working tree
git_prompt_status() {
INDEX=$(git status --porcelain 2> /dev/null)
Expand Down

1 comment on commit 2d5412e

@unphased
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, I'm wondering if somebody could explain to me what hook_com is?

Please sign in to comment.