summaryrefslogtreecommitdiff
path: root/lisp/vc-svn.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/vc-svn.el')
-rw-r--r--lisp/vc-svn.el19
1 files changed, 13 insertions, 6 deletions
diff --git a/lisp/vc-svn.el b/lisp/vc-svn.el
index de34fa847e2..b08765b89a3 100644
--- a/lisp/vc-svn.el
+++ b/lisp/vc-svn.el
@@ -114,12 +114,19 @@ This is only meaningful if you don't use the implicit checkout model
(file-name-directory file)))
(with-temp-buffer
(cd (file-name-directory file))
- (condition-case nil
- (vc-svn-command t 0 file "status" "-v")
- ;; We can't find an `svn' executable. We could also deregister SVN.
- (file-error nil))
- (vc-svn-parse-status t)
- (eq 'SVN (vc-file-getprop file 'vc-backend)))))
+ (let ((status
+ (condition-case nil
+ ;; Ignore all errors.
+ (vc-svn-command t t file "status" "-v")
+ ;; Some problem happened. E.g. We can't find an `svn'
+ ;; executable. We used to only catch `file-error' but when
+ ;; the process is run on a remote host via Tramp, the error
+ ;; is only reported via the exit status which is turned into
+ ;; an `error' by vc-do-command.
+ (error nil))))
+ (when (eq 0 status)
+ (vc-svn-parse-status t)
+ (eq 'SVN (vc-file-getprop file 'vc-backend)))))))
(defun vc-svn-state (file &optional localp)
"SVN-specific version of `vc-state'."