]> code.delx.au - gnu-emacs/blobdiff - lisp/vc-svn.el
(enum event_kind) [MAC_OS]: Update comment for MAC_APPLE_EVENT.
[gnu-emacs] / lisp / vc-svn.el
index 966f5d2c9c93b5e7db1752967bfddd4bf63ea5fe..6d27c5c6a7ed41105d37dad00baa9f14a7357e6e 100644 (file)
@@ -176,6 +176,23 @@ This is only meaningful if you don't use the implicit checkout model
          ((eq svn-state 'needs-patch) "(patch)")
          ((eq svn-state 'needs-merge) "(merge)"))))
 
+(defun vc-svn-previous-version (file rev)
+  (let ((newrev (1- (string-to-number rev))))
+    (when (< 0 newrev)
+      (number-to-string newrev))))
+
+(defun vc-svn-next-version (file rev)
+  (let ((newrev (1+ (string-to-number rev))))
+    ;; The "workfile version" is an uneasy conceptual fit under Subversion;
+    ;; we use it as the upper bound until a better idea comes along.  If the
+    ;; workfile version W coincides with the tree's latest revision R, then
+    ;; this check prevents a "no such revision: R+1" error.  Otherwise, it
+    ;; inhibits showing of W+1 through R, which could be considered anywhere
+    ;; from gracious to impolite.
+    (unless (< (string-to-number (vc-file-getprop file 'vc-workfile-version))
+               newrev)
+      (number-to-string newrev))))
+
 
 ;;;
 ;;; State-changing functions
@@ -353,7 +370,11 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
     (vc-svn-command
      buffer
      (if (and (vc-stay-local-p file) (fboundp 'start-process)) 'async 0)
-     file "log")))
+     file "log"
+     ;; By default Subversion only shows the log upto the working version,
+     ;; whereas we also want the log of the subsequent commits.  At least
+     ;; that's what the vc-cvs.el code does.
+     "-rHEAD:0")))
 
 (defun vc-svn-diff (file &optional oldvers newvers buffer)
   "Get a difference report using SVN between two versions of FILE."