mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-01-02 02:19:06 +01:00
Subversion 1.7 centralises metadata into a single location - a single .svn directory in the project's root, rather than one for every directory in the working copy. This change utilises 'svn info' to work out whether or not the pwd is under subversion, so oh-my-zsh's svn plugin will work regardless of the svn version.
43 lines
1 KiB
Bash
43 lines
1 KiB
Bash
function svn_prompt_info {
|
|
if [ $(in_svn) ]; then
|
|
echo "$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_PREFIX\
|
|
$ZSH_THEME_REPO_NAME_COLOR$(svn_get_repo_name):$(svn_get_rev_nr)$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_SUFFIX$ZSH_PROMPT_BASE_COLOR$(svn_dirty)$ZSH_PROMPT_BASE_COLOR"
|
|
fi
|
|
}
|
|
|
|
|
|
function in_svn() {
|
|
info=$(svn info 2> /dev/null) || return
|
|
if [ $info ]; then
|
|
echo 1
|
|
fi
|
|
}
|
|
|
|
function svn_get_repo_name {
|
|
if [ $(in_svn) ]; then
|
|
svn info | sed -n 's/Repository\ Root:\ .*\///p' | read SVN_ROOT
|
|
|
|
svn info | sed -n "s/URL:\ .*$SVN_ROOT\///p" | sed "s/\/.*$//"
|
|
fi
|
|
}
|
|
|
|
function svn_get_rev_nr {
|
|
if [ $(in_svn) ]; then
|
|
svn info 2> /dev/null | sed -n s/Revision:\ //p
|
|
fi
|
|
}
|
|
|
|
function svn_dirty_choose {
|
|
if [ $(in_svn) ]; then
|
|
s=$(svn status|grep -E '^\s*[ACDIM!?L]' 2>/dev/null)
|
|
if [ $s ]; then
|
|
echo $1
|
|
else
|
|
echo $2
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function svn_dirty {
|
|
svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN
|
|
}
|