     (with-current-buffer buf
       (erase-buffer)
       (setq default-directory dir))
-    (apply 'call-process svn-program nil buf nil (symbol-name command) args)
+    (apply svn-process-file svn-program nil buf nil (symbol-name command) args)
     buf))
 
 (defun svn-run-for-stdout (command args)

      (setq buffer-read-only t)
      (let ((cmd `(,svn-program ,subcommand ,@args))
            proc)
        (setq proc (apply 'start-process "svn" buf cmd))
        (set-process-coding-system proc 'utf-8)
        (set-process-filter proc 'svn-output-filter)
        (while (eq (process-status proc) 'run)

  :type 'boolean
  :group 'dsvn)

;; start-file-process and process-file are needed for tramp but only appeared
;; in Emacs 23 and 22 respectively.
(setq svn-start-file-process
  (if (fboundp 'start-file-process) 'start-file-process 'start-process))
(setq svn-process-file
  (if (fboundp 'process-file) 'process-file 'call-process))

(defun svn-call-process (program buffer &rest args)
  "Run svn and wait for it to finish.
Argument PROGRAM is the svn binary to run.
Argument BUFFER is the buffer in which to insert output.
Optional argument ARGS are the arguments to svn."
  (let ((proc (apply svn-start-file-process "svn" buffer program args)))
    (set-process-coding-system proc 'utf-8)
    (set-process-filter proc 'svn-output-filter)
    (while (eq (process-status proc) 'run)
