Subject: bug#23436: closed (Re: bug#23436: [PATCH] Attemp to use the true name of a file to determine responsible vc if the genuine name does not work.)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 04 Nov 2016 10:09:02 +0000

Your bug report

#23436: [PATCH] Use the true name of a file to determine responsible vc.

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
23436: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23436
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#23436: [PATCH] Attemp to use the true name of a file to determine responsible vc if the genuine name does not work.
From: Eli Zaretskii <[email-masked]>
To: Hong Xu <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Fri, 04 Nov 2016 12:08:59 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Hong Xu <[email-masked]>
> Cc: [email-masked], [email-masked]
> Date: Fri, 04 Nov 2016 00:46:05 -0700
> 
> On 2016-11-01 Tue 11:47 GMT-0700, Eli Zaretskii <[email-masked]> wrote:
> 
> >> From: Hong Xu <[email-masked]>
> >> Cc: [email-masked], [email-masked]
> >> Date: Mon, 31 Oct 2016 12:38:42 -0700
> >> 
> >> On 2016-10-31 Mon 08:43 GMT-0700, Eli Zaretskii <[email-masked]> wrote:
> >> >
> >> > The node "Truenames" sounds like a good place.
> >> 
> >> Added in the new patch now (along with the change of the previous version).
> >
> > LGTM, thanks.
> 
> Can we apply the patch if it is good enough? Thanks.

Pushed now.

Please note that I generally wait for a week or so since the last
comment before pushing changes, to let people enough time to comment
or object.

Subject: [PATCH] Use the true name of a file to determine responsible vc.
From: Hong Xu <[email-masked]>
To: [email-masked]
Cc: Hong Xu <[email-masked]>
Date: Tue, 3 May 2016 14:32:25 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

In many cases, e.g., a symbolic link to a directory inside a vc tracked
directory, vc-responsible-backend would fail to know the true backend.

---

There is probably a better fix than this... Feel free to do so.

---
 lisp/vc/vc.el | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 25b41e34e645..1b060b4d1374 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -960,14 +960,15 @@ If FILE is already registered, return the
 backend of FILE.  If FILE is not registered, then the
 first backend in `vc-handled-backends' that declares itself
 responsible for FILE is returned."
-  (or (and (not (file-directory-p file)) (vc-backend file))
+  (let ((file-path (file-truename file)))
+    (or (and (not (file-directory-p file-path)) (vc-backend file-path))
       (catch 'found
-	;; First try: find a responsible backend.  If this is for registration,
-	;; it must be a backend under which FILE is not yet registered.
-	(dolist (backend vc-handled-backends)
-	  (and (vc-call-backend backend 'responsible-p file)
-	       (throw 'found backend))))
-      (error "No VC backend is responsible for %s" file)))
+        ;; First try: find a responsible backend.  If this is for registration,
+        ;; it must be a backend under which FILE is not yet registered.
+        (dolist (backend vc-handled-backends)
+          (and (vc-call-backend backend 'responsible-p file-path)
+            (throw 'found backend))))
+      (error "No VC backend is responsible for %s" file-path))))
 
 (defun vc-expand-dirs (file-or-dir-list backend)
   "Expands directories in a file list specification.
-- 
2.8.2