zshrc: Adding support for cvs repositories to vcs_info()
authorFrank Terbeck <ft@grml.org>
Fri, 29 Aug 2008 23:12:56 +0000 (01:12 +0200)
committerFrank Terbeck <ft@grml.org>
Fri, 29 Aug 2008 23:12:56 +0000 (01:12 +0200)
debian/changelog
etc/zsh/zshrc

index 767b0b5..4360673 100644 (file)
@@ -1,3 +1,9 @@
+grml-etc-core (0.3.54) unstable; urgency=low
+
+  * zshrc: Adding support for cvs repositories to vcs_info()
+
+ -- Frank Terbeck <ft@grml.org>  Sat, 30 Aug 2008 01:12:01 +0200
+
 grml-etc-core (0.3.53) unstable; urgency=low
 
   [ Frank Terbeck ]
index c3535f2..7920d6f 100644 (file)
@@ -1041,7 +1041,7 @@ fi
 #   First, the context in which we are working:
 #       :vcs_info:<vcs-string>
 #   ...where <vcs-string> is one of:
-#       - git, git-svn, hg, darcs, bzr, mtn, svn or svk
+#       - git, git-svn, hg, darcs, bzr, mtn, svn, cvs or svk
 #
 #   You can of course use ':vcs_info:*' to match all VCSs at once.
 #
@@ -1301,6 +1301,24 @@ VCS_INFO_bzr_get_data () { # {{{
     printf '%s' ${msg}
 }
 # }}}
+VCS_INFO_cvs_get_data () { # {{{
+    local msg cvsbranch cvsbase basename
+
+    cvsbase="."
+    while [[ -d "${cvsbase}/../CVS" ]]; do
+        cvsbase="${cvsbase}/.."
+    done
+    cvsbase=$(VCS_INFO_realpath ${cvsbase})
+    cvsbranch=$(< ./CVS/Repository)
+    basename=${cvsbase:t}
+    cvsbranch=${cvsbranch##${basename}/}
+    [[ -z ${cvsbranch} ]] && cvsbranch=${basename}
+
+    msg=$(VCS_INFO_format)
+    zformat -f msg "${msg}" "a:" "b:${cvsbranch}" "s:${vcs}" "r:${basename}" "R:${cvsbase}"
+    printf '%s' ${msg}
+}
+# }}}
 # VCS_INFO_*_detect () {{{
 
 VCS_INFO_detect_by_dir() {
@@ -1333,6 +1351,12 @@ VCS_INFO_bzr_detect() {
     return $?
 }
 
+VCS_INFO_cvs_detect() {
+    check_com -c svn || return 1
+    [[ -d "CVS" ]] && return 0
+    return 1
+}
+
 VCS_INFO_darcs_detect() {
     check_com -c darcs || return 1
     vcs_comm[detect_need_file]=format
@@ -1393,7 +1417,7 @@ vcs_info () { # {{{
     zstyle -T ":vcs_info:${vcs}" "enable" || return 0
     zstyle -a ":vcs_info:${vcs}" "disable" disabled
 
-    VCSs=(git hg bzr darcs mtn svn svk)
+    VCSs=(git hg bzr darcs mtn svn cvs svk)
 
     (( found = 0 ))
     for vcs in ${VCSs} ; do