diff options
Diffstat (limited to 'zshfunc/vcs-info/VCS_INFO_svk_detect')
-rw-r--r-- | zshfunc/vcs-info/VCS_INFO_svk_detect | 34 |
1 files changed, 34 insertions, 0 deletions
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 +} |