46 lines
981 B
Bash
46 lines
981 B
Bash
source /usr/lib/git-core/git-sh-prompt
|
|
|
|
git_is_repo() {
|
|
if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == "true" ]]; then
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
git_current_branch() {
|
|
echo $(git rev-parse --abbrev-ref HEAD)
|
|
}
|
|
|
|
git_repo_is_dirty() {
|
|
if [[ -z $(git status --short) ]]; then
|
|
return 1;
|
|
fi
|
|
|
|
return 0;
|
|
}
|
|
|
|
git_prompt_info() {
|
|
! git_is_repo || return
|
|
|
|
current_branch=$(git_current_branch 2> /dev/null)
|
|
current_commit=$(git rev-parse --short HEAD 2> /dev/null)
|
|
suffix=''
|
|
|
|
if [[ ! -z ${current_commit} ]]; then
|
|
suffix="${suffix} [%{$fg_bold[yellow]%}${current_commit}%{$reset_color%}]"
|
|
fi
|
|
|
|
if git_repo_is_dirty; then
|
|
suffix="${suffix} %{$fg_bold[red]%}*%{$reset_color%}"
|
|
fi
|
|
|
|
if [[ -n git_current_branch ]]; then
|
|
echo " %{$fg_bold[green]%}$(__git_ps1 %s)%{$reset_color%}${suffix}"
|
|
fi
|
|
}
|
|
|
|
setopt promptsubst
|
|
|
|
export PS1='${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[blue]%}%~%{$reset_color%}$(git_prompt_info) \$ '
|