mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-06-05 05:03:16 +02:00
72 lines
2 KiB
Bash
72 lines
2 KiB
Bash
# get the name of the branch we are on
|
|
function git_prompt_info() {
|
|
local type=${1:-$branch} # ; [[ -n "$type" ]] || type='branch'
|
|
|
|
branch=$(current_branch) || return
|
|
d_branch="$branch"
|
|
case $type in
|
|
*abbr*)
|
|
d_branch=${branch/master/M}
|
|
;;
|
|
esac
|
|
|
|
d_commit='';
|
|
|
|
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${d_branch}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
|
|
}
|
|
|
|
parse_git_dirty () {
|
|
if [[ -n $(git status -s 2> /dev/null) ]]; then
|
|
echo "$ZSH_THEME_GIT_PROMPT_DIRTY"
|
|
else
|
|
echo "$ZSH_THEME_GIT_PROMPT_CLEAN"
|
|
fi
|
|
}
|
|
|
|
#
|
|
# Will return the current branch name
|
|
# Usage example: git pull origin $(current_branch)
|
|
#
|
|
function current_branch() {
|
|
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
|
|
echo ${ref#refs/heads/}
|
|
}
|
|
|
|
#
|
|
# current branch for display. Abbreviate master to M.
|
|
# Other substitutions are possible.
|
|
# TODO:
|
|
# * allow to enable/disable translation of master to M.
|
|
# * enable argument to git_prompt_info control what is displayed
|
|
# (eg: M=535516, ala git-prompt project for bash)
|
|
function current_branch_for_display() {
|
|
branch=$(current_branch) || return
|
|
echo ${branch/master/M} # master abbreviated to M.
|
|
}
|
|
|
|
# get the status of the working tree
|
|
git_prompt_status() {
|
|
INDEX=$(git status --porcelain 2> /dev/null)
|
|
STATUS=""
|
|
if $(echo "$INDEX" | grep '^?? ' &> /dev/null); then
|
|
STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS"
|
|
fi
|
|
if $(echo "$INDEX" | grep '^A ' &> /dev/null); then
|
|
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS"
|
|
elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then
|
|
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS"
|
|
fi
|
|
if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then
|
|
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
|
|
fi
|
|
if $(echo "$INDEX" | grep '^R ' &> /dev/null); then
|
|
STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS"
|
|
fi
|
|
if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then
|
|
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
|
|
fi
|
|
if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
|
|
STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS"
|
|
fi
|
|
echo $STATUS
|
|
}
|