about summary refs log tree commit diff
path: root/Functions/VCS_Info/Backends/VCS_INFO_get_data_svn
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2008-09-19 12:58:46 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2008-09-19 12:58:46 +0000
commit23f2b4503c9d7697e382fed550d3bf846b81dd5c (patch)
tree8953de32c2d4126882d9d4c66bcbe7b8615e3419 /Functions/VCS_Info/Backends/VCS_INFO_get_data_svn
parentd9f1432e074872aa3a89515bc65ede5ad6551a47 (diff)
downloadzsh-23f2b4503c9d7697e382fed550d3bf846b81dd5c.tar.gz
zsh-23f2b4503c9d7697e382fed550d3bf846b81dd5c.tar.xz
zsh-23f2b4503c9d7697e382fed550d3bf846b81dd5c.zip
users/13252 and elsewhere: Frank Terbeck plus tweaks:
add VCS_Info function system
Diffstat (limited to 'Functions/VCS_Info/Backends/VCS_INFO_get_data_svn')
-rw-r--r--Functions/VCS_Info/Backends/VCS_INFO_get_data_svn28
1 files changed, 28 insertions, 0 deletions
diff --git a/Functions/VCS_Info/Backends/VCS_INFO_get_data_svn b/Functions/VCS_Info/Backends/VCS_INFO_get_data_svn
new file mode 100644
index 000000000..7a23419b0
--- /dev/null
+++ b/Functions/VCS_Info/Backends/VCS_INFO_get_data_svn
@@ -0,0 +1,28 @@
+## 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
+
+svnbase=".";
+svninfo=()
+svn info --non-interactive | while IFS=: read a b; do svninfo[${a// /_}]="${b## #}"; done
+while [[ -d "${svnbase}/../.svn" ]]; do
+    parentinfo=()
+    svn 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"
+zformat -f svnbranch "${svnbranch}" "b:${svninfo[URL]##*/}" "r:${svninfo[Revision]}"
+VCS_INFO_formats '' "${svnbranch}" "${svnbase}"
+return 0