summaryrefslogtreecommitdiff
path: root/lisp/vc-svn.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/vc-svn.el')
-rw-r--r--lisp/vc-svn.el17
1 files changed, 17 insertions, 0 deletions
diff --git a/lisp/vc-svn.el b/lisp/vc-svn.el
index 966f5d2c9c9..82942f78358 100644
--- a/lisp/vc-svn.el
+++ b/lisp/vc-svn.el
@@ -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