changeset 47797:d0555af982c8

(vc-rcs-find-version): New fun. (vc-rcs-checkout): Remove `workfile' arg and simplify.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 08 Oct 2002 15:33:18 +0000
parents cf312195338d
children 20dfef584009
files lisp/vc-rcs.el
diffstat 1 files changed, 46 insertions(+), 63 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/vc-rcs.el	Tue Oct 08 15:31:43 2002 +0000
+++ b/lisp/vc-rcs.el	Tue Oct 08 15:33:18 2002 +0000
@@ -5,7 +5,7 @@
 ;; Author:     FSF (see vc.el for full credits)
 ;; Maintainer: Andre Spiegel <spiegel@gnu.org>
 
-;; $Id: vc-rcs.el,v 1.26 2002/09/04 20:49:35 spiegel Exp $
+;; $Id: vc-rcs.el,v 1.27 2002/10/04 18:38:04 monnier Exp $
 
 ;; This file is part of GNU Emacs.
 
@@ -355,12 +355,18 @@
 	    (vc-do-command nil 1 "rcs" (vc-name file)
 			   (concat "-u" old-version))))))))
 
-(defun vc-rcs-checkout (file &optional editable rev workfile)
-  "Retrieve a copy of a saved version of FILE into a workfile."
-  (let ((filename (or workfile file))
-	(file-buffer (get-file-buffer file))
+(defun vc-rcs-find-version (file rev buffer)
+  (apply 'vc-do-command
+	 buffer 0 "co" (vc-name file)
+	 "-q" ;; suppress diagnostic output
+	 (concat "-p" rev)
+	 vc-checkout-switches))
+
+(defun vc-rcs-checkout (file &optional editable rev)
+  "Retrieve a copy of a saved version of FILE."
+  (let ((file-buffer (get-file-buffer file))
 	switches)
-    (message "Checking out %s..." filename)
+    (message "Checking out %s..." file)
     (save-excursion
       ;; Change buffers to get local value of vc-checkout-switches.
       (if file-buffer (set-buffer file-buffer))
@@ -374,63 +380,40 @@
 	(save-excursion
 	  ;; Adjust the default-directory so that the check-out creates
 	  ;; the file in the right place.
-	  (setq default-directory (file-name-directory filename))
-	  (if workfile  ;; RCS
-	      ;; RCS can't check out into arbitrary file names directly.
-	      ;; Use `co -p' and make stdout point to the correct file.
-	      (let ((vc-modes (logior (file-modes (vc-name file))
-				      (if editable 128 0)))
-		    (failed t))
-		(unwind-protect
-		    (progn
-                      (let ((coding-system-for-read 'no-conversion)
-                            (coding-system-for-write 'no-conversion))
-                        (with-temp-file filename
-                          (apply 'vc-do-command
-                                 (current-buffer) 0 "co" (vc-name file)
-                                 "-q" ;; suppress diagnostic output
-                                 (if editable "-l")
-                                 (concat "-p" rev)
-                                 switches)))
-                      (set-file-modes filename
-				      (logior (file-modes (vc-name file))
-					      (if editable 128 0)))
-		      (setq failed nil))
-		  (and failed (file-exists-p filename)
-		       (delete-file filename))))
-	    (let (new-version)
-	      ;; if we should go to the head of the trunk,
-	      ;; clear the default branch first
-	      (and rev (string= rev "")
-		   (vc-rcs-set-default-branch file nil))
-	      ;; now do the checkout
-	      (apply 'vc-do-command
-		     nil 0 "co" (vc-name file)
-		     ;; If locking is not strict, force to overwrite
-		     ;; the writable workfile.
-		     (if (eq (vc-checkout-model file) 'implicit) "-f")
-		     (if editable "-l")
-		     (if rev (concat "-r" rev)
-		       ;; if no explicit revision was specified,
-		       ;; check out that of the working file
-		       (let ((workrev (vc-workfile-version file)))
-			 (if workrev (concat "-r" workrev)
-			   nil)))
-		     switches)
-	      ;; determine the new workfile version
-	      (with-current-buffer "*vc*"
-		(setq new-version
-		      (vc-parse-buffer "^revision \\([0-9.]+\\).*\n" 1)))
-	      (vc-file-setprop file 'vc-workfile-version new-version)
-	      ;; if necessary, adjust the default branch
-	      (and rev (not (string= rev ""))
-		   (vc-rcs-set-default-branch 
-		    file
-		    (if (vc-rcs-latest-on-branch-p file new-version)
-			(if (vc-trunk-p new-version) nil
-			  (vc-branch-part new-version))
-		      new-version))))))
-	(message "Checking out %s...done" filename)))))
+	  (setq default-directory (file-name-directory file))
+	  (let (new-version)
+	    ;; if we should go to the head of the trunk,
+	    ;; clear the default branch first
+	    (and rev (string= rev "")
+		 (vc-rcs-set-default-branch file nil))
+	    ;; now do the checkout
+	    (apply 'vc-do-command
+		   nil 0 "co" (vc-name file)
+		   ;; If locking is not strict, force to overwrite
+		   ;; the writable workfile.
+		   (if (eq (vc-checkout-model file) 'implicit) "-f")
+		   (if editable "-l")
+		   (if rev (concat "-r" rev)
+		     ;; if no explicit revision was specified,
+		     ;; check out that of the working file
+		     (let ((workrev (vc-workfile-version file)))
+		       (if workrev (concat "-r" workrev)
+			 nil)))
+		   switches)
+	    ;; determine the new workfile version
+	    (with-current-buffer "*vc*"
+	      (setq new-version
+		    (vc-parse-buffer "^revision \\([0-9.]+\\).*\n" 1)))
+	    (vc-file-setprop file 'vc-workfile-version new-version)
+	    ;; if necessary, adjust the default branch
+	    (and rev (not (string= rev ""))
+		 (vc-rcs-set-default-branch 
+		  file
+		  (if (vc-rcs-latest-on-branch-p file new-version)
+		      (if (vc-trunk-p new-version) nil
+			(vc-branch-part new-version))
+		    new-version)))))
+	(message "Checking out %s...done" file)))))
 
 (defun vc-rcs-revert (file &optional contents-done)
   "Revert FILE to the version it was based on."