                                                    (file-name-nondirectory file-name)
                                                    ".svn-base"))
                    (progn
-                     (svn-run-svn nil t 'cat (append (list "cat" "-r" revision) (list file-name)))
+                     (svn-run-svn nil t 'cat "cat" "-r" revision file-name)
                      ;;todo: error processing
                      ;;svn: Filesystem has no item
                      ;;svn: file not found: revision `15', path `/trunk/file.txt'

When the function is called without a prefix argument: get all marked files.
With a prefix argument: get only the actual file."
  (interactive "P")
  (svn-status-get-specific-revision-internal arg t))

(defun svn-status-get-specific-revision-internal (&optional only-actual-file arg)
  "Retrieve older revisions of files.
If ONLY-ACTUAL-FILE is non-nil, use the file at point.  Otherwise,
use the marked files, or the file at point if nothing has been marked.
If ARG is non-nil, ask the user to specify the revision.  Otherwise,
retrieve HEAD if an update is known to be available, or BASE if not.

After the call, `svn-status-get-revision-file-info' will be an alist
\((WORKING-FILE-NAME . RETRIEVED-REVISION-FILE-NAME) ...).  These file
names are relative to the directory where `svn-status' was run."
  ;; TODO: Return the alist, instead of storing it in a variable.
  (let* ((fl (svn-status-get-file-list (not only-actual-file)))
         (file-names (mapcar 'svn-status-line-info->filename fl))
         (revision (if arg
                       (svn-status-read-revision-string "Get files for version: " "PREV")
                     (if (svn-status-line-info->update-available (car fl)) "HEAD" "BASE")))
         (file-name)
         (file-name-with-revision))
    (message "Getting revision %s for %S" revision file-names)
    (setq svn-status-get-specific-revision-file-info nil)
    (while file-names
      (setq file-name (car file-names))
      (setq file-name-with-revision (concat file-name ".~" revision "~"))
      (add-to-list 'svn-status-get-specific-revision-file-info
                   (cons file-name file-name-with-revision))
      (save-excursion
        (let ((content
               (with-temp-buffer

          (setq buffer-read-only nil)
          (erase-buffer)  ;Widen, because we'll save the whole buffer.
          (insert content)
          (save-buffer)))))
  (setq svn-status-get-specific-revision-file-info
        (nreverse svn-status-get-specific-revision-file-info))
  (message "svn-status-get-specific-revision-file-info: %S"
           svn-status-get-specific-revision-file-info))


(defun svn-status-ediff-with-revision (arg)
  "Run ediff on the current file with a previous revision.
If ARG then prompt for revision to diff against."
  (interactive "P")
  (svn-status-get-specific-revision-internal
   (list (svn-status-get-line-information))
   (if arg :ask :auto))
  (let* ((ediff-after-quit-destination-buffer (current-buffer))
         (my-buffer (find-file-noselect (caar svn-status-get-specific-revision-file-info)))
         (base-buff (find-file-noselect (cdar svn-status-get-specific-revision-file-info)))
