     (with-current-buffer (get-buffer-create svn-process-buffer-name)
       (setq old-process-default-dir default-directory)
       (setq default-directory directory)) ;; update the default-directory for the *svn-process* buffer
-  (svn-run nil t 'parse-info "info" ".")
-  (with-current-buffer svn-process-buffer-name
-    ;; (message "svn-status-repo-for-path: %s: default-directory: %s directory: %s old-process-default-dir: %s" svn-process-buffer-name default-directory directory old-process-default-dir)
-    (setq default-directory old-process-default-dir)
-    (goto-char (point-min))
-    (let ((case-fold-search t))
-      (if (search-forward "repository root: " nil t)
-          (buffer-substring-no-properties (point) (svn-point-at-eol))
-        (when (search-forward "repository uuid: " nil t)
+    (svn-status-parse-info t)
+    (or (plist-get svn-status-base-info :repository-root)
+        (if (plist-get svn-status-base-info :repository-uuid)
+            (concat "Svn Repo UUID: " (plist-get svn-status-base-info :repository-uuid))
           (message "psvn.el: Detected an old svn working copy in '%s'. Please check it out again to get a 'Repository Root' entry in the svn info output."
-                   default-directory)
-          (concat "Svn Repo UUID: " (buffer-substring-no-properties (point) (svn-point-at-eol)))))))))
+                   default-directory)))))
 
 (defun svn-status-base-dir (&optional start-directory)
   "Find the svn root directory for the current working copy.


;;; Code:

(defconst svn-psvn-revision "2012-03-26, 21:23:49" "The revision date of psvn.")


(require 'easymenu)

(defun svn-status-parse-info-result ()
  "Parse the result from the svn info command.
Put the found values in `svn-status-base-info'."
  (save-excursion
    (setq svn-status-base-info ())
    (set-buffer svn-process-buffer-name)
    (goto-char (point-min))
    (let ((case-fold-search t)
          (key)
          (val))
      (loop while (looking-at "\\(.*?\\)\\s-*:\\s-*\\(.*\\)$")
        do (setq key (intern (concat ":" (downcase (subst-char-in-string ?\  ?- (match-string 1))))))
        (setq val (match-string 2))
        (setq svn-status-base-info (plist-put svn-status-base-info
                                              key val))
        until (< 0 (forward-line))))))

(defun svn-status-base-info->url ()
  "Extract the url part from `svn-status-base-info'."
  (plist-get svn-status-base-info :url))

(defun svn-status-base-info->repository-root ()
  "Extract the repository-root part from `svn-status-base-info'."
  (plist-get svn-status-base-info :repository-root))

(defun svn-status-checkout-prefix-path ()
  "When only a part of the svn repository is checked out, return the file path for this checkout."
