changeset 104621:f4a041a8c69d

* vc.el (vc-trunk-p): Rename to vc-rcs-trunk-p and move to vc-rcs.el. (vc-minor-part): Rename to vc-rcs-minor-part and move to vc-rcs.el. (vc-default-previous-revision): Rename to vc-rcs-previous-revision and move to vc-rcs.el. (vc-default-next-revision): Rename to vc-rcs-next-revision and move to vc-rcs.el. (vc-cvs-update-changelog): Move to vc-cvs.el, use vc-call-backend. (vc-rcs-update-changelog): Remove. (vc-update-changelog-rcs2log): Rename to vc-rcs-update-changelog and move to vc-rcs.el. * vc-rcs.el (vc-rcs-latest-on-branch-p, vc-rcs-checkin) (vc-rcs-checkout, vc-rcs-rollback): Adjust for the vc-rcs-trunk-p renaming. (vc-rcs-trunk-p, vc-rcs-minor-part, vc-rcs-previous-revision) (vc-rcs-next-revision, vc-rcs-update-changelog): Moved here from vc.el, renamed to be RCS specific. * vc-cvs.el (vc-cvs-previous-revision, vc-cvs-next-revision): New functions. (vc-cvs-update-changelog): Moved here from vc.el. * vc-sccs.el (vc-sccs-previous-revision, vc-sccs-next-revision): New functions.
author Dan Nicolaescu <dann@ics.uci.edu>
date Wed, 26 Aug 2009 17:54:05 +0000
parents dbe0b4c419f5
children cf947e01a2b6
files lisp/ChangeLog lisp/vc-rcs.el lisp/vc-sccs.el lisp/vc.el
diffstat 4 files changed, 126 insertions(+), 101 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Aug 26 14:47:23 2009 +0000
+++ b/lisp/ChangeLog	Wed Aug 26 17:54:05 2009 +0000
@@ -1,3 +1,29 @@
+2009-08-26  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* vc.el (vc-trunk-p): Rename to vc-rcs-trunk-p and move to vc-rcs.el.
+	(vc-minor-part): Rename to vc-rcs-minor-part and move to vc-rcs.el.
+	(vc-default-previous-revision): Rename to vc-rcs-previous-revision
+	and move to vc-rcs.el.
+	(vc-default-next-revision): Rename to vc-rcs-next-revision and
+	move to vc-rcs.el.
+	(vc-cvs-update-changelog): Move to vc-cvs.el, use vc-call-backend.
+	(vc-rcs-update-changelog): Remove.
+	(vc-update-changelog-rcs2log): Rename to vc-rcs-update-changelog
+	and move to vc-rcs.el.
+
+	* vc-rcs.el (vc-rcs-latest-on-branch-p, vc-rcs-checkin)
+	(vc-rcs-checkout, vc-rcs-rollback): Adjust for the vc-rcs-trunk-p
+	renaming.
+	(vc-rcs-trunk-p, vc-rcs-minor-part, vc-rcs-previous-revision)
+	(vc-rcs-next-revision, vc-rcs-update-changelog): Moved here from
+	vc.el, renamed to be RCS specific.
+
+	* vc-cvs.el (vc-cvs-previous-revision, vc-cvs-next-revision): New functions.
+	(vc-cvs-update-changelog): Moved here from vc.el.
+
+	* vc-sccs.el (vc-sccs-previous-revision, vc-sccs-next-revision):
+	New functions.
+
 2009-08-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* emacs-lisp/bytecomp.el (byte-compile-lapcode): Fix up last change.
--- a/lisp/vc-rcs.el	Wed Aug 26 14:47:23 2009 +0000
+++ b/lisp/vc-rcs.el	Wed Aug 26 17:54:05 2009 +0000
@@ -220,7 +220,7 @@
   (unless version (setq version (vc-working-revision file)))
   (with-temp-buffer
     (string= version
-	     (if (vc-trunk-p version)
+	     (if (vc-rcs-trunk-p version)
 		 (progn
 		   ;; Compare VERSION to the head version number.
 		   (vc-insert-file (vc-name file) "^[0-9]")
@@ -378,7 +378,7 @@
 	       (not (string= (vc-branch-part old-version)
 			     (vc-branch-part new-version))))
 	  (vc-rcs-set-default-branch file
-				     (if (vc-trunk-p new-version) nil
+				     (if (vc-rcs-trunk-p new-version) nil
 				       (vc-branch-part new-version)))
 	  ;; If this is an old RCS release, we might have
 	  ;; to remove a remaining lock.
@@ -438,7 +438,7 @@
 					 ;; use current workfile version
 					 workrev
 				       ;; REV is t ...
-				       (if (not (vc-trunk-p workrev))
+				       (if (not (vc-rcs-trunk-p workrev))
 					   ;; ... go to head of current branch
 					   (vc-branch-part workrev)
 					 ;; ... go to head of trunk
@@ -456,7 +456,7 @@
 		 (vc-rcs-set-default-branch
 		  file
 		  (if (vc-rcs-latest-on-branch-p file new-version)
-		      (if (vc-trunk-p new-version) nil
+		      (if (vc-rcs-trunk-p new-version) nil
 			(vc-branch-part new-version))
 		    new-version)))))
 	(message "Checking out %s...done" file))))))
@@ -468,7 +468,7 @@
       (error "RCS backend doesn't support directory-level rollback."))
   (dolist (file (vc-expand-dirs files))
 	  (let* ((discard (vc-working-revision file))
-		 (previous (if (vc-trunk-p discard) "" (vc-branch-part discard)))
+		 (previous (if (vc-rcs-trunk-p discard) "" (vc-branch-part discard)))
 		 (config (current-window-configuration))
 		 (done nil))
 	    (if (null (yes-or-no-p (format "Remove version %s from %s history? "
@@ -799,6 +799,95 @@
 ;;; Miscellaneous
 ;;;
 
+(defun vc-rcs-trunk-p (rev)
+  "Return t if REV is a revision on the trunk."
+  (not (eq nil (string-match "\\`[0-9]+\\.[0-9]+\\'" rev))))
+
+(defun vc-rcs-minor-part (rev)
+  "Return the minor revision number of a revision number REV."
+  (string-match "[0-9]+\\'" rev)
+  (substring rev (match-beginning 0) (match-end 0)))
+
+(defun vc-rcs-previous-revision (file rev)
+  "Return the revision number immediately preceding REV for FILE,
+or nil if there is no previous revision.  This default
+implementation works for MAJOR.MINOR-style revision numbers as
+used by RCS and CVS."
+  (let ((branch (vc-branch-part rev))
+        (minor-num (string-to-number (vc-rcs-minor-part rev))))
+    (when branch
+      (if (> minor-num 1)
+          ;; revision does probably not start a branch or release
+          (concat branch "." (number-to-string (1- minor-num)))
+        (if (vc-rcs-trunk-p rev)
+            ;; we are at the beginning of the trunk --
+            ;; don't know anything to return here
+            nil
+          ;; we are at the beginning of a branch --
+          ;; return revision of starting point
+          (vc-branch-part branch))))))
+
+(defun vc-rcs-next-revision (file rev)
+  "Return the revision number immediately following REV for FILE,
+or nil if there is no next revision.  This default implementation
+works for MAJOR.MINOR-style revision numbers as used by RCS
+and CVS."
+  (when (not (string= rev (vc-working-revision file)))
+    (let ((branch (vc-branch-part rev))
+	  (minor-num (string-to-number (vc-rcs-minor-part rev))))
+      (concat branch "." (number-to-string (1+ minor-num))))))
+
+(defun vc-rcs-update-changelog (files)
+  "Default implementation of update-changelog.
+Uses `rcs2log' which only works for RCS and CVS."
+  ;; FIXME: We (c|sh)ould add support for cvs2cl
+  (let ((odefault default-directory)
+	(changelog (find-change-log))
+	;; Presumably not portable to non-Unixy systems, along with rcs2log:
+	(tempfile (make-temp-file
+		   (expand-file-name "vc"
+				     (or small-temporary-file-directory
+					 temporary-file-directory))))
+        (login-name (or user-login-name
+                        (format "uid%d" (number-to-string (user-uid)))))
+	(full-name (or add-log-full-name
+		       (user-full-name)
+		       (user-login-name)
+		       (format "uid%d" (number-to-string (user-uid)))))
+	(mailing-address (or add-log-mailing-address
+			     user-mail-address)))
+    (find-file-other-window changelog)
+    (barf-if-buffer-read-only)
+    (vc-buffer-sync)
+    (undo-boundary)
+    (goto-char (point-min))
+    (push-mark)
+    (message "Computing change log entries...")
+    (message "Computing change log entries... %s"
+	     (unwind-protect
+		 (progn
+		   (setq default-directory odefault)
+		   (if (eq 0 (apply 'call-process
+                                    (expand-file-name "rcs2log"
+                                                      exec-directory)
+                                    nil (list t tempfile) nil
+                                    "-c" changelog
+                                    "-u" (concat login-name
+                                                 "\t" full-name
+                                                 "\t" mailing-address)
+                                    (mapcar
+                                     (lambda (f)
+                                       (file-relative-name
+					(expand-file-name f odefault)))
+                                     files)))
+                       "done"
+		     (pop-to-buffer (get-buffer-create "*vc*"))
+		     (erase-buffer)
+		     (insert-file-contents tempfile)
+		     "failed"))
+	       (setq default-directory (file-name-directory changelog))
+	       (delete-file tempfile)))))
+
 (defun vc-rcs-check-headers ()
   "Check if the current file has any headers in it."
   (save-excursion
--- a/lisp/vc-sccs.el	Wed Aug 26 14:47:23 2009 +0000
+++ b/lisp/vc-sccs.el	Wed Aug 26 17:54:05 2009 +0000
@@ -370,6 +370,12 @@
 ;;; Miscellaneous
 ;;;
 
+(defun vc-sccs-previous-revision (file rev)
+  (vc-call-backend 'RCS 'previous-revision file rev))
+
+(defun vc-sccs-next-revision (file rev)
+  (vc-call-backend 'RCS 'next-revision file rev))
+
 (defun vc-sccs-check-headers ()
   "Check if the current file has any headers in it."
   (save-excursion
--- a/lisp/vc.el	Wed Aug 26 14:47:23 2009 +0000
+++ b/lisp/vc.el	Wed Aug 26 17:54:05 2009 +0000
@@ -2243,11 +2243,6 @@
 ;; functions that operate on RCS revision numbers.  This code should
 ;; also be moved into the backends.  It stays for now, however, since
 ;; it is used in code below.
-;;;###autoload
-(defun vc-trunk-p (rev)
-  "Return t if REV is a revision on the trunk."
-  (not (eq nil (string-match "\\`[0-9]+\\.[0-9]+\\'" rev))))
-
 (defun vc-branch-p (rev)
   "Return t if REV is a branch revision."
   (not (eq nil (string-match "\\`[0-9]+\\(\\.[0-9]+\\.[0-9]+\\)*\\'" rev))))
@@ -2259,43 +2254,9 @@
     (when index
       (substring rev 0 index))))
 
-(defun vc-minor-part (rev)
-  "Return the minor revision number of a revision number REV."
-  (string-match "[0-9]+\\'" rev)
-  (substring rev (match-beginning 0) (match-end 0)))
-
 (define-obsolete-function-alias
   'vc-default-previous-version 'vc-default-previous-revision "23.1")
 
-(defun vc-default-previous-revision (backend file rev)
-  "Return the revision number immediately preceding REV for FILE,
-or nil if there is no previous revision.  This default
-implementation works for MAJOR.MINOR-style revision numbers as
-used by RCS and CVS."
-  (let ((branch (vc-branch-part rev))
-        (minor-num (string-to-number (vc-minor-part rev))))
-    (when branch
-      (if (> minor-num 1)
-          ;; revision does probably not start a branch or release
-          (concat branch "." (number-to-string (1- minor-num)))
-        (if (vc-trunk-p rev)
-            ;; we are at the beginning of the trunk --
-            ;; don't know anything to return here
-            nil
-          ;; we are at the beginning of a branch --
-          ;; return revision of starting point
-          (vc-branch-part branch))))))
-
-(defun vc-default-next-revision (backend file rev)
-  "Return the revision number immediately following REV for FILE,
-or nil if there is no next revision.  This default implementation
-works for MAJOR.MINOR-style revision numbers as used by RCS
-and CVS."
-  (when (not (string= rev (vc-working-revision file)))
-    (let ((branch (vc-branch-part rev))
-	  (minor-num (string-to-number (vc-minor-part rev))))
-      (concat branch "." (number-to-string (1+ minor-num))))))
-
 (defun vc-default-responsible-p (backend file)
   "Indicate whether BACKEND is reponsible for FILE.
 The default is to return nil always."
@@ -2314,63 +2275,6 @@
 
 (defun vc-default-init-revision (backend) vc-default-init-revision)
 
-(defalias 'vc-cvs-update-changelog 'vc-update-changelog-rcs2log)
-
-(defalias 'vc-rcs-update-changelog 'vc-update-changelog-rcs2log)
-
-;; FIXME: This should probably be moved to vc-rcs.el and replaced in
-;; vc-cvs.el by code using cvs2cl.
-(defun vc-update-changelog-rcs2log (files)
-  "Default implementation of update-changelog.
-Uses `rcs2log' which only works for RCS and CVS."
-  ;; FIXME: We (c|sh)ould add support for cvs2cl
-  (let ((odefault default-directory)
-	(changelog (find-change-log))
-	;; Presumably not portable to non-Unixy systems, along with rcs2log:
-	(tempfile (make-temp-file
-		   (expand-file-name "vc"
-				     (or small-temporary-file-directory
-					 temporary-file-directory))))
-        (login-name (or user-login-name
-                        (format "uid%d" (number-to-string (user-uid)))))
-	(full-name (or add-log-full-name
-		       (user-full-name)
-		       (user-login-name)
-		       (format "uid%d" (number-to-string (user-uid)))))
-	(mailing-address (or add-log-mailing-address
-			     user-mail-address)))
-    (find-file-other-window changelog)
-    (barf-if-buffer-read-only)
-    (vc-buffer-sync)
-    (undo-boundary)
-    (goto-char (point-min))
-    (push-mark)
-    (message "Computing change log entries...")
-    (message "Computing change log entries... %s"
-	     (unwind-protect
-		 (progn
-		   (setq default-directory odefault)
-		   (if (eq 0 (apply 'call-process
-                                    (expand-file-name "rcs2log"
-                                                      exec-directory)
-                                    nil (list t tempfile) nil
-                                    "-c" changelog
-                                    "-u" (concat login-name
-                                                 "\t" full-name
-                                                 "\t" mailing-address)
-                                    (mapcar
-                                     (lambda (f)
-                                       (file-relative-name
-					(expand-file-name f odefault)))
-                                     files)))
-                       "done"
-		     (pop-to-buffer (get-buffer-create "*vc*"))
-		     (erase-buffer)
-		     (insert-file-contents tempfile)
-		     "failed"))
-	       (setq default-directory (file-name-directory changelog))
-	       (delete-file tempfile)))))
-
 (defun vc-default-find-revision (backend file rev buffer)
   "Provide the new `find-revision' op based on the old `checkout' op.
 This is only for compatibility with old backends.  They should be updated