mirror of
https://git.code.sf.net/p/zsh/code
synced 2026-04-25 01:52:33 -04:00
36 lines
1.3 KiB
Bash
36 lines
1.3 KiB
Bash
## vim:ft=zsh
|
|
## subversion support by:
|
|
## + Frank Terbeck <ft@bewatermyfriend.org>
|
|
## + Phil Pennock
|
|
## Distributed under the same BSD-ish license as zsh itself.
|
|
|
|
setopt localoptions noksharrays extendedglob NO_shwordsplit
|
|
local svnbase svnbranch a b rrn
|
|
local -A svninfo parentinfo
|
|
local -xA hook_com
|
|
|
|
svnbase=".";
|
|
svninfo=()
|
|
${vcs_comm[cmd]} info --non-interactive | while IFS=: read a b; do svninfo[${a// /_}]="${b## #}"; done
|
|
while [[ -d "${svnbase}/../.svn" ]]; do
|
|
parentinfo=()
|
|
${vcs_comm[cmd]} info --non-interactive "${svnbase}/.." | while IFS=: read a b; do parentinfo[${a// /_}]="${b## #}"; done
|
|
[[ ${parentinfo[Repository_UUID]} != ${svninfo[Repository_UUID]} ]] && break
|
|
svninfo=(${(kv)parentinfo})
|
|
svnbase="${svnbase}/.."
|
|
done
|
|
|
|
svnbase="$(VCS_INFO_realpath ${svnbase})"
|
|
|
|
rrn=${svnbase:t}
|
|
zstyle -s ":vcs_info:${vcs}:${usercontext}:${rrn}" branchformat svnbranch || svnbranch="%b:%r"
|
|
hook_com=( branch "${svninfo[URL]##*/}" revision "${svninfo[Revision]}" )
|
|
if VCS_INFO_hook 'set-branch-format' "${svnbranch}"; then
|
|
zformat -f svnbranch "${svnbranch}" "b:${hook_com[branch]}" "r:${hook_com[revision]}"
|
|
else
|
|
svnbranch=${hook_com[branch-replace]}
|
|
fi
|
|
hook_com=()
|
|
VCS_INFO_formats '' "${svnbranch}" "${svnbase}" '' '' "${svninfo[Revision]}" ''
|
|
return 0
|