GIF89a;
Direktori : /usr/share/zsh/5.0.2/functions/ |
Current File : //usr/share/zsh/5.0.2/functions/VCS_INFO_get_data_svn |
## 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 -i rc local -A svninfo parentinfo local -xA hook_com svnbase="."; svninfo=() # Unfortunately, `$pipestatus' is broken currently. Until that problem is # resolved, here is a workaround that will get things done, without using it. # Clumsily, but that's life. local -a dat dat=( ${(f)"$(${vcs_comm[cmd]} info --non-interactive 2>&1)"} ) rc=$? (( rc != 0 )) && return 1 # The following line is the real code, the following is the workaround. #${vcs_comm[cmd]} info --non-interactive \ print -l "${dat[@]}" \ |& while IFS=: read a b; do svninfo[${a// /_}]="${b## #}" done #rc=${pipestatus[1]} #(( rc != 0 )) && return 1 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