From cab4384bdb27f01a340323312cbcd8129d8d0569 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Sat, 27 Jun 2009 10:33:51 +0000 Subject: Add vcs-info git-svn-id: svn+ssh://asteria.noreply.org/svn/weaselutils/trunk@398 bc3d92e2-beff-0310-a7cd-cc87d7ac0ede --- zshfunc/vcs-info/VCS_INFO_svk_detect | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 zshfunc/vcs-info/VCS_INFO_svk_detect (limited to 'zshfunc/vcs-info/VCS_INFO_svk_detect') diff --git a/zshfunc/vcs-info/VCS_INFO_svk_detect b/zshfunc/vcs-info/VCS_INFO_svk_detect new file mode 100644 index 0000000..1bd4c7f --- /dev/null +++ b/zshfunc/vcs-info/VCS_INFO_svk_detect @@ -0,0 +1,34 @@ +VCS_INFO_svk_detect() { #{{{ + setopt localoptions noksharrays extendedglob + local -a info + local -i fhash + fhash=0 + + VCS_INFO_check_com svk || return 1 + [[ -f ~/.svk/config ]] || return 1 + + # This detection function is a bit different from the others. + # We need to read svk's config file to detect a svk repository + # in the first place. Therefore, we'll just proceed and read + # the other information, too. This is more then any of the + # other detections do but this takes only one file open for + # svk at most. VCS_INFO_svk_get_data() get simpler, too. :-) + while IFS= read -r line ; do + if [[ -n ${vcs_comm[basedir]} ]] ; then + line=${line## ##} + [[ ${line} == depotpath:* ]] && vcs_comm[branch]=${line##*/} + [[ ${line} == revision:* ]] && vcs_comm[revision]=${line##*[[:space:]]##} + [[ -n ${vcs_comm[branch]} ]] && [[ -n ${vcs_comm[revision]} ]] && break + continue + fi + (( fhash > 0 )) && [[ ${line} == ' '[^[:space:]]*:* ]] && break + [[ ${line} == ' hash:'* ]] && fhash=1 && continue + (( fhash == 0 )) && continue + [[ ${PWD}/ == ${${line## ##}%:*}/* ]] && vcs_comm[basedir]=${${line## ##}%:*} + done < ~/.svk/config + + [[ -n ${vcs_comm[basedir]} ]] && \ + [[ -n ${vcs_comm[branch]} ]] && \ + [[ -n ${vcs_comm[revision]} ]] && return 0 + return 1 +} -- cgit v1.2.3