]> code.delx.au - gnu-emacs/commitdiff
(vc-default-revert): New fun.
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 14 Dec 2005 16:57:35 +0000 (16:57 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 14 Dec 2005 16:57:35 +0000 (16:57 +0000)
lisp/vc.el

index 4087c67a4f0c61fe538635b9aff9e21fe4293468..9429ab4c6469671295df22f86bd9e279800183e9 100644 (file)
@@ -2529,6 +2529,33 @@ return its name; otherwise return nil."
         (if (file-exists-p backup-file)
             backup-file)))))
 
+(defun vc-default-revert (backend file contents-done)
+  (unless contents-done
+    (let ((rev (vc-workfile-version file))
+          (file-buffer (or (get-file-buffer file) (current-buffer))))
+      (message "Checking out %s..." file)
+      (let ((failed t)
+            (backup-name (car (find-backup-file-name file))))
+        (when backup-name
+          (copy-file file backup-name 'ok-if-already-exists 'keep-date)
+          (unless (file-writable-p file)
+            (set-file-modes file (logior (file-modes file) 128))))
+        (unwind-protect
+            (let ((coding-system-for-read 'no-conversion)
+                  (coding-system-for-write 'no-conversion))
+              (with-temp-file file
+                (let ((outbuf (current-buffer)))
+                  ;; Change buffer to get local value of vc-checkout-switches.
+                  (with-current-buffer file-buffer
+                    (let ((default-directory (file-name-directory file)))
+                      (vc-call find-version file rev outbuf)))))
+              (setq failed nil))
+          (when backup-name
+            (if failed
+                (rename-file backup-name file 'ok-if-already-exists)
+              (and (not vc-make-backup-files) (delete-file backup-name))))))
+      (message "Checking out %s...done" file))))
+
 (defun vc-revert-file (file)
   "Revert FILE back to the version it was based on."
   (with-vc-properties