changeset 107095:d1489c6b5705

add primative implementation of vc-svn-revision-table
author Mark A. Hershberger <mah@everybody.org>
date Fri, 05 Feb 2010 14:20:17 -0500
parents 7e87cb80b24c
children 31db1aaeac2d
files lisp/ChangeLog lisp/vc-svn.el
diffstat 2 files changed, 23 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri Feb 05 14:09:38 2010 -0500
+++ b/lisp/ChangeLog	Fri Feb 05 14:20:17 2010 -0500
@@ -1,3 +1,7 @@
+2010-02-05  Mark A. Hershberger  <mah@everybody.org>
+
+	* vc-svn.el (vc-svn-revision-table): New function.
+
 2010-02-05  Michael Albinus  <michael.albinus@gmx.de>
 
 	* net/ange-ftp.el (ange-ftp-insert-directory):
--- a/lisp/vc-svn.el	Fri Feb 05 14:09:38 2010 -0500
+++ b/lisp/vc-svn.el	Fri Feb 05 14:20:17 2010 -0500
@@ -31,6 +31,10 @@
 (eval-when-compile
   (require 'vc))
 
+;; Clear up the cache to force vc-call to check again and discover
+;; new functions when we reload this file.
+(put 'SVN 'vc-functions nil)
+
 ;;;
 ;;; Customization options
 ;;;
@@ -722,6 +726,21 @@
     (beginning-of-line)
     (if (looking-at vc-svn-annotate-re) (match-string 1))))
 
+(defun vc-svn-revision-table (files)
+  (let ((vc-svn-revisions '()))
+    (with-current-buffer "*vc*"
+      (vc-svn-command nil 0 files "log" "-q")
+      (goto-char (point-min))
+      (forward-line)
+      (let ((start (point-min))
+            (loglines (buffer-substring-no-properties (point-min)
+                                                      (point-max))))
+        (while (string-match "^r\\([0-9]+\\) " loglines)
+          (push (match-string 1 loglines) vc-svn-revisions)
+          (setq start (+ start (match-end 0)))
+          (setq loglines (buffer-substring-no-properties start (point-max)))))
+    vc-svn-revisions)))
+
 (provide 'vc-svn)
 
 ;; arch-tag: 02f10c68-2b4d-453a-90fc-1eee6cfb268d