From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Emilio Lopes Newsgroups: gmane.emacs.bugs Subject: bug#18461: `vc-svn-registered' signals an error if a directory has be (re)moved. Date: Mon, 15 Sep 2014 15:27:36 +0200 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: ger.gmane.org 1410787768 24004 80.91.229.3 (15 Sep 2014 13:29:28 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 15 Sep 2014 13:29:28 +0000 (UTC) Cc: 18461@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Sep 15 15:29:21 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XTWLI-0000UN-Fo for geb-bug-gnu-emacs@m.gmane.org; Mon, 15 Sep 2014 15:29:20 +0200 Original-Received: from localhost ([::1]:59745 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XTWLF-00068r-HI for geb-bug-gnu-emacs@m.gmane.org; Mon, 15 Sep 2014 09:29:17 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56517) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XTWL6-000663-TV for bug-gnu-emacs@gnu.org; Mon, 15 Sep 2014 09:29:13 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XTWL2-00017X-2D for bug-gnu-emacs@gnu.org; Mon, 15 Sep 2014 09:29:08 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:49706) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XTWL1-00017T-VN for bug-gnu-emacs@gnu.org; Mon, 15 Sep 2014 09:29:04 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1XTWL1-0004BD-4G for bug-gnu-emacs@gnu.org; Mon, 15 Sep 2014 09:29:03 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Emilio Lopes Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 15 Sep 2014 13:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18461 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 18461-submit@debbugs.gnu.org id=B18461.141078768215992 (code B ref 18461); Mon, 15 Sep 2014 13:29:02 +0000 Original-Received: (at 18461) by debbugs.gnu.org; 15 Sep 2014 13:28:02 +0000 Original-Received: from localhost ([127.0.0.1]:41270 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XTWK1-00049p-Qe for submit@debbugs.gnu.org; Mon, 15 Sep 2014 09:28:02 -0400 Original-Received: from mail-vc0-f171.google.com ([209.85.220.171]:45925) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XTWJx-00049V-5T for 18461@debbugs.gnu.org; Mon, 15 Sep 2014 09:27:57 -0400 Original-Received: by mail-vc0-f171.google.com with SMTP id im17so3367525vcb.2 for <18461@debbugs.gnu.org>; Mon, 15 Sep 2014 06:27:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=79pcr02cCtzvFvMkXWCXQPfF3VYxjRaJ0e+veTSXbag=; b=CBwRp7W3hXcwaoNAYqPnSN/a2d58uPzNr0SeF6TjS0WxYpl17yiZw/uSLSVdTtqR0J aYz2gSwlLhvKxAeE4njJXeOemcgdCLFbrzRxZIck6QYTawRMfQZcr7ch8n2aeXH3hCB3 XQdEgHAc+Z7NuJ9a6jM7+kRFOq6Pv/jS5zxHos890zr85LneMyOAuGsZGOuuNiNM4fEa Fir7MYG7zp/MAktCIJjkiTL6wQl+v3qP9W6KXQ/daA+ekJ+bYjPtedopdWsi6ridBnzu 8e8cVtwffSTZp9zPyV1ibRCc+bSCqPTzoVRpHUtmNifo8H46uMCZI+NWhVcruayU1raS ZonA== X-Received: by 10.221.64.142 with SMTP id xi14mr23616381vcb.31.1410787676205; Mon, 15 Sep 2014 06:27:56 -0700 (PDT) Original-Received: by 10.220.239.7 with HTTP; Mon, 15 Sep 2014 06:27:36 -0700 (PDT) In-Reply-To: X-Google-Sender-Auth: 4-NT17VXeUfMa0RdKOmYH-MukdI X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:93374 Archived-At: Here is an updated patch: --- lisp/ChangeLog 2014-09-15 00:20:21 +0000 +++ lisp/ChangeLog 2014-09-15 13:22:54 +0000 @@ -1,3 +1,10 @@ +2014-09-15 Emilio C. Lopes + + * vc/vc-svn.el (vc-svn-registered): `cd' to the project root, not + to the file's directory, in case the directory has been (re)moved, + and do this inside a `with-demoted-errors' form. + (vc-svn-state): Ditto, modulo `with-demoted-errors'. + 2014-09-15 Glenn Morris * image.el (image-multi-frame-p): Fix thinko - do not force --- lisp/vc/vc-svn.el 2014-01-01 07:43:34 +0000 +++ lisp/vc/vc-svn.el 2014-09-15 13:22:54 +0000 @@ -135,30 +135,30 @@ (defun vc-svn-registered (file) "Check if FILE is SVN registered." - (when (vc-svn-root file) - (with-temp-buffer - (cd (file-name-directory file)) - (let* (process-file-side-effects - (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) - (let ((parsed (vc-svn-parse-status file))) - (and parsed (not (memq parsed '(ignored unregistered)))))))))) + (let ((dir (vc-svn-root file))) + (when dir + (with-temp-buffer + (let* ((process-file-side-effects nil) + (status + (with-demoted-errors "Error: %S" + ;; In case some problem might happen. 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. + (cd dir) + (vc-svn-command t t file "status" "-v")))) + (when (eq 0 status) + (let ((parsed (vc-svn-parse-status file))) + (and parsed (not (memq parsed '(ignored unregistered))))))))))) (defun vc-svn-state (file &optional localp) "SVN-specific version of `vc-state'." (let (process-file-side-effects) (setq localp (or localp (vc-stay-local-p file 'SVN))) (with-temp-buffer - (cd (file-name-directory file)) + (cd (vc-svn-root file)) (vc-svn-command t 0 file "status" (if localp "-v" "-u")) (vc-svn-parse-status file))))