[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#42966: 28.0.50; vc-dir: wrong backend
From: |
Lars Ingebrigtsen |
Subject: |
bug#42966: 28.0.50; vc-dir: wrong backend |
Date: |
Sat, 17 Oct 2020 09:13:59 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
And here's the benching with the patch applied:
(benchmark-run 1000
(vc-responsible-backend "/tmp/git-dir/dir1/dir2/hg-dir/bar"))
=> (0.375446369 10 0.07836344099999998)
(benchmark-run 100
(vc-responsible-backend "/ssh:stories:/tmp/git-dir/dir1/dir2/hg-dir/bar"))
=> (3.485639896 110 1.00616348)
Er... the local version is now faster? Is a throw expensive, somehow?
Probably not very significant.
But as expected, the tramp version is slower, because it does more
lookups remotely. But not hugely.
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 39d0fab391..899f260089 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -979,12 +979,20 @@ vc-responsible-backend
If NO-ERROR is nil, signal an error that no VC backend is
responsible for the given file."
(or (and (not (file-directory-p file)) (vc-backend file))
- (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))))
+ ;; First try: find a responsible backend. If this is for registration,
+ ;; it must be a backend under which FILE is not yet registered.
+ (let ((dirs (delq nil
+ (mapcar
+ (lambda (backend)
+ (vc-call-backend backend 'responsible-p file))
+ vc-handled-backends))))
+ ;; Just a single response (or none); use it.
+ (if (< (length dirs) 2)
+ (car dirs)
+ ;; Several roots; we seem to have one vc inside another's
+ ;; directory. Choose the most specific.
+ (car (sort dirs (lambda (d1 d2)
+ (< (length d2) (length d1)))))))
(unless no-error
(error "No VC backend is responsible for %s" file))))
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
- bug#42966: 28.0.50; vc-dir: wrong backend, Lars Ingebrigtsen, 2020/10/16
- bug#42966: 28.0.50; vc-dir: wrong backend, Dmitry Gutov, 2020/10/16
- bug#42966: 28.0.50; vc-dir: wrong backend, Lars Ingebrigtsen, 2020/10/16
- bug#42966: 28.0.50; vc-dir: wrong backend, Dmitry Gutov, 2020/10/16
- bug#42966: 28.0.50; vc-dir: wrong backend, Lars Ingebrigtsen, 2020/10/17
- bug#42966: 28.0.50; vc-dir: wrong backend,
Lars Ingebrigtsen <=
- bug#42966: 28.0.50; vc-dir: wrong backend, Lars Ingebrigtsen, 2020/10/17
- bug#42966: 28.0.50; vc-dir: wrong backend, Dmitry Gutov, 2020/10/17
- bug#42966: 28.0.50; vc-dir: wrong backend, Lars Ingebrigtsen, 2020/10/18
- bug#42966: 28.0.50; vc-dir: wrong backend, Dmitry Gutov, 2020/10/17
- bug#42966: 28.0.50; vc-dir: wrong backend, Michael Albinus, 2020/10/18
- bug#42966: 28.0.50; vc-dir: wrong backend, Dmitry Gutov, 2020/10/23
- bug#42966: 28.0.50; vc-dir: wrong backend, Michael Albinus, 2020/10/24
- bug#42966: 28.0.50; vc-dir: wrong backend, Dmitry Gutov, 2020/10/24
- bug#42966: 28.0.50; vc-dir: wrong backend, Michael Albinus, 2020/10/25
- bug#42966: 28.0.50; vc-dir: wrong backend, Dmitry Gutov, 2020/10/26