* vc with svn and git @ 2017-02-24 15:23 Alfred M. Szmidt 2017-02-24 15:35 ` Andreas Schwab 2017-02-24 17:28 ` Karl Fogel 0 siblings, 2 replies; 17+ messages in thread From: Alfred M. Szmidt @ 2017-02-24 15:23 UTC (permalink / raw) To: emacs-devel If /home/ams contains a .svn directory, doing (vc-dir "/home/ams/emacs") (which is git repository) results in: svn: warning: W155010: The node '/home/ams/emacs' was not found. svn: E200009: Could not display info for all targets because some targets don't exist This patch puts the SVN backend to come into effect last. 2017-02-24 Alfred M. Szmidt <ams@gnu.org> (tiny change) * lisp/vc/vc-hooks.el (vc-handled-backends): Check SVN backend last. diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el index 47e923c209..7da1244ef5 100644 --- a/lisp/vc/vc-hooks.el +++ b/lisp/vc/vc-hooks.el @@ -107,7 +107,7 @@ vc-ignore-dir-regexp :type 'regexp :group 'vc) -(defcustom vc-handled-backends '(RCS CVS SVN SCCS SRC Bzr Git Hg Mtn) +(defcustom vc-handled-backends '(RCS CVS SCCS SRC Bzr Git Hg Mtn SVN) ;; RCS, CVS, SVN, SCCS, and SRC come first because they are per-dir ;; rather than per-tree. RCS comes first because of the multibackend ;; support intended to use RCS for local commits (with a remote CVS server). ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 15:23 vc with svn and git Alfred M. Szmidt @ 2017-02-24 15:35 ` Andreas Schwab 2017-02-24 15:54 ` Alfred M. Szmidt 2017-02-24 17:28 ` Karl Fogel 1 sibling, 1 reply; 17+ messages in thread From: Andreas Schwab @ 2017-02-24 15:35 UTC (permalink / raw) To: Alfred M. Szmidt; +Cc: emacs-devel On Feb 24 2017, ams@gnu.org (Alfred M. Szmidt) wrote: > 2017-02-24 Alfred M. Szmidt <ams@gnu.org> (tiny change) > > * lisp/vc/vc-hooks.el (vc-handled-backends): Check SVN backend last. > > > diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el > index 47e923c209..7da1244ef5 100644 > --- a/lisp/vc/vc-hooks.el > +++ b/lisp/vc/vc-hooks.el > @@ -107,7 +107,7 @@ vc-ignore-dir-regexp > :type 'regexp > :group 'vc) > > -(defcustom vc-handled-backends '(RCS CVS SVN SCCS SRC Bzr Git Hg Mtn) > +(defcustom vc-handled-backends '(RCS CVS SCCS SRC Bzr Git Hg Mtn SVN) > ;; RCS, CVS, SVN, SCCS, and SRC come first because they are per-dir > ;; rather than per-tree. RCS comes first because of the multibackend > ;; support intended to use RCS for local commits (with a remote CVS server). Did you read the comment? Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 15:35 ` Andreas Schwab @ 2017-02-24 15:54 ` Alfred M. Szmidt 0 siblings, 0 replies; 17+ messages in thread From: Alfred M. Szmidt @ 2017-02-24 15:54 UTC (permalink / raw) To: Andreas Schwab; +Cc: emacs-devel The comment is only true for Subversion < 1.7. See https://subversion.apache.org/docs/release-notes/1.7.html#single-db. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 15:23 vc with svn and git Alfred M. Szmidt 2017-02-24 15:35 ` Andreas Schwab @ 2017-02-24 17:28 ` Karl Fogel 2017-02-24 17:49 ` Stefan Monnier 2017-02-24 18:11 ` Alfred M. Szmidt 1 sibling, 2 replies; 17+ messages in thread From: Karl Fogel @ 2017-02-24 17:28 UTC (permalink / raw) To: Alfred M. Szmidt; +Cc: emacs-devel ams@gnu.org (Alfred M. Szmidt) writes: >If /home/ams contains a .svn directory, doing (vc-dir >"/home/ams/emacs") (which is git repository) results in: > > svn: warning: W155010: The node '/home/ams/emacs' was not found. > > svn: E200009: Could not display info for all targets because some targets don't exist > >This patch puts the SVN backend to come into effect last. This surprised me. I don't know the VC code well, but something seems odd here: Shouldn't VC check in order from deeper to shallower anyway? That is, if you run (vc-dir "/foo/bar/baz/qux") then it should *first* check "qux", then "baz", then "bar", then "foo", in that order. If there is a .git subdir anywhere along that upward climb, then the check can stop, because the answer is determined. It doesn't done matter that some parent above might have an .svn dir, since SVN does not "shadow" a deeper Git (nor vice versa -- the example is the same if you swap .svn and .git). So the fact that the order in which backends are listed in 'vc-handled-backends' affects anything in this scenario is surprising. Also, going from deeper to shallower means you don't have to care whether SVN is pre- or post-1.7, i.e., whether the .svn administrative subdirs are per-directory or per-tree. It works the same either way. Now, if the way VC determines ownership is by invoking 'svn', 'git', etc externally on the full target, then yes, the order in which it tries backends would matter. That would be problematic from an efficiency standpoint (and in if implemented without enough error-handling it also has correctness problem, as this thread indicates). I suppose it has the advantage that it defers knowledge of version control ownership details to the program best positioned to have that knowledge, but in practice, I think ownership is always indicated by a dot-subdir of a certain name, right? I think at this point we can count on that. In any case, if an external program is going to be invoked, then if the first one returns error, VC should catch that error and just try the next backend in the list, and so on until the list is exhausted, rather than confront the user with the first error. But IMHO it would be better just to look for the dot directories, in a deeper-to-shallower search. Is there *any* supported VC backend that isn't just using a dot-directory to store version control metadata? -Karl >2017-02-24 Alfred M. Szmidt <ams@gnu.org> (tiny change) > > * lisp/vc/vc-hooks.el (vc-handled-backends): Check SVN backend last. > > >diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el >index 47e923c209..7da1244ef5 100644 >--- a/lisp/vc/vc-hooks.el >+++ b/lisp/vc/vc-hooks.el >@@ -107,7 +107,7 @@ vc-ignore-dir-regexp > :type 'regexp > :group 'vc) > >-(defcustom vc-handled-backends '(RCS CVS SVN SCCS SRC Bzr Git Hg Mtn) >+(defcustom vc-handled-backends '(RCS CVS SCCS SRC Bzr Git Hg Mtn SVN) > ;; RCS, CVS, SVN, SCCS, and SRC come first because they are per-dir > ;; rather than per-tree. RCS comes first because of the multibackend > ;; support intended to use RCS for local commits (with a remote CVS server). ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 17:28 ` Karl Fogel @ 2017-02-24 17:49 ` Stefan Monnier 2017-02-24 18:11 ` Alfred M. Szmidt 1 sibling, 0 replies; 17+ messages in thread From: Stefan Monnier @ 2017-02-24 17:49 UTC (permalink / raw) To: emacs-devel > Shouldn't VC check in order from deeper to shallower anyway? Yes, it should. It's a long standing limitation: the double loop is (forall backends (forall directory-parents ...)) instead of (forall directory-parents (forall backends ...)) -- Stefan ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 17:28 ` Karl Fogel 2017-02-24 17:49 ` Stefan Monnier @ 2017-02-24 18:11 ` Alfred M. Szmidt 2017-02-24 18:45 ` Karl Fogel 1 sibling, 1 reply; 17+ messages in thread From: Alfred M. Szmidt @ 2017-02-24 18:11 UTC (permalink / raw) To: Karl Fogel; +Cc: emacs-devel But IMHO it would be better just to look for the dot directories, in a deeper-to-shallower search. That would be a very nice thing. Is there *any* supported VC backend that isn't just using a dot-directory to store version control metadata? The only thing that comes to mind is RCS/SCCS which can store the version data beside the original file. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 18:11 ` Alfred M. Szmidt @ 2017-02-24 18:45 ` Karl Fogel 2017-02-24 20:04 ` Richard Copley 2017-02-28 14:54 ` vc with svn and git Alfred M. Szmidt 0 siblings, 2 replies; 17+ messages in thread From: Karl Fogel @ 2017-02-24 18:45 UTC (permalink / raw) To: Alfred M. Szmidt; +Cc: emacs-devel ams@gnu.org (Alfred M. Szmidt) writes: > But IMHO it would be better just to look for the dot directories, > in a deeper-to-shallower search. > >That would be a very nice thing. > > Is there *any* supported VC backend that isn't just using a > dot-directory to store version control metadata? > >The only thing that comes to mind is RCS/SCCS which can store the >version data beside the original file. Ah, right. Sorry, I asked the question in an oversimplified way. What I really meant is: don't all supported VC backends store their metadata in a way that can be detected reliably in a walk from deeper to shallower? The sibling ",v" and "s." files (for RCS- and SCCS-controlled files, respectively) can be detected that way, although in those cases it's a two-step dance: 1) First see that both "foo" and "foo,v" (or "s.foo") are present 2) Then invoke the corresponding backend to make absolutely sure Stefan Monnier <monnier@iro.umontreal.ca> writes: > Yes, it should. It's a long standing limitation: the double loop is > > (forall backends > (forall directory-parents > ...)) > > instead of > > (forall directory-parents > (forall backends > ...)) Okay. Thanks for confirming that there wasn't some subtle Reason Why Things Are The Way They Are going on here. Alfred, want to have a try at that patch instead? I think it might not be very large. It looks like `vc-registered' in lisp/vc/vc-hooks.el is the key function. I think there's a caching layer going on -- that appears to be what this block is about: ((and (boundp 'file-name-handler-alist) (setq handler (find-file-name-handler file 'vc-registered))) ;; handler should set vc-backend and return t if registered (funcall handler 'vc-registered file)) There's no reason the caching layer can't stay in place. The only thing we're concerned with is when there's a cache miss; that's where we get to the `t' clause of the `cond': (t ;; There is no file name handler. ;; Try vc-BACKEND-registered for each handled BACKEND. ...) My guess is that's the part Stefan is referring to above. There's some extra complexity in that clause because (I think?) it uses `vc-file-getprop' to check if perhaps there's some special backend for this target or something -- so that's a second kind of cache check? -- but then we get to the heart of the matter, namely, the actual backend invocation: (mapc (lambda (b) (and (vc-call-backend b 'registered file) (vc-file-setprop file 'vc-backend b) (throw 'found t))) I don't fully understand the caching layer(s). It almost looks like there are *two* possible caches to check: the `vc-registered' handler for that file in `file-name-handler-alist', and if that misses, then the `vc-backend' property maintained by the VC code itself? But whatever's going on there, it can stay as is. I think the entire fix here might be just to replace that 'mapc' call with a different loop, as per Stefan's comment above. Best regards, -Karl ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 18:45 ` Karl Fogel @ 2017-02-24 20:04 ` Richard Copley 2017-02-24 21:16 ` Stefan Monnier 2017-02-28 14:54 ` vc with svn and git Alfred M. Szmidt 1 sibling, 1 reply; 17+ messages in thread From: Richard Copley @ 2017-02-24 20:04 UTC (permalink / raw) To: Karl Fogel; +Cc: Alfred M. Szmidt, Emacs Development On 24 February 2017 at 18:45, Karl Fogel <kfogel@red-bean.com> wrote: > ams@gnu.org (Alfred M. Szmidt) writes: >> But IMHO it would be better just to look for the dot directories, >> in a deeper-to-shallower search. >> >>That would be a very nice thing. >> >> Is there *any* supported VC backend that isn't just using a >> dot-directory to store version control metadata? >> >>The only thing that comes to mind is RCS/SCCS which can store the >>version data beside the original file. > > Ah, right. Sorry, I asked the question in an oversimplified way. What I really meant is: don't all supported VC backends store their metadata in a way that can be detected reliably in a walk from deeper to shallower? > > The sibling ",v" and "s." files (for RCS- and SCCS-controlled files, respectively) can be detected that way, although in those cases it's a two-step dance: > > 1) First see that both "foo" and "foo,v" (or "s.foo") are present > 2) Then invoke the corresponding backend to make absolutely sure > > Stefan Monnier <monnier@iro.umontreal.ca> writes: >> Yes, it should. It's a long standing limitation: the double loop is >> >> (forall backends >> (forall directory-parents >> ...)) >> >> instead of >> >> (forall directory-parents >> (forall backends >> ...)) > > Okay. Thanks for confirming that there wasn't some subtle Reason Why Things Are The Way They Are going on here. > > Alfred, want to have a try at that patch instead? I think it might not be very large. It looks like `vc-registered' in lisp/vc/vc-hooks.el is the key function. > > I think there's a caching layer going on -- that appears to be what this block is about: > > ((and (boundp 'file-name-handler-alist) > (setq handler (find-file-name-handler file 'vc-registered))) > ;; handler should set vc-backend and return t if registered > (funcall handler 'vc-registered file)) > > There's no reason the caching layer can't stay in place. The only thing we're concerned with is when there's a cache miss; that's where we get to the `t' clause of the `cond': > > (t > ;; There is no file name handler. > ;; Try vc-BACKEND-registered for each handled BACKEND. > ...) > > My guess is that's the part Stefan is referring to above. There's some extra complexity in that clause because (I think?) it uses `vc-file-getprop' to check if perhaps there's some special backend for this target or something -- so that's a second kind of cache check? -- but then we get to the heart of the matter, namely, the actual backend invocation: > > (mapc > (lambda (b) > (and (vc-call-backend b 'registered file) > (vc-file-setprop file 'vc-backend b) > (throw 'found t))) > > I don't fully understand the caching layer(s). It almost looks like there are *two* possible caches to check: the `vc-registered' handler for that file in `file-name-handler-alist', and if that misses, then the `vc-backend' property maintained by the VC code itself? But whatever's going on there, it can stay as is. I think the entire fix here might be just to replace that 'mapc' call with a different loop, as per Stefan's comment above. > > Best regards, > -Karl > There's no particular reason for even a single directory not to contain more than one of .svn, .git, RCS, CVS subdirectories and/or ,v and s. files. VC should ask what backend to use in case of ambiguity, and there should be a way to force reprompt. This would also fix the example of a subdirectory called "rcs" which is not a place for master files but simply a subdirectory for a project called "rcs" (the MSYS2-packages repository https://github.com/Alexpux/MSYS2-packages has such a subdirectory). On case-insensitive filesystems it's not possible to use that repo without temporarily taking RCS out of vc-handled backends. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 20:04 ` Richard Copley @ 2017-02-24 21:16 ` Stefan Monnier 2017-02-24 21:44 ` Richard Copley 2017-02-25 8:01 ` Michael Albinus 0 siblings, 2 replies; 17+ messages in thread From: Stefan Monnier @ 2017-02-24 21:16 UTC (permalink / raw) To: emacs-devel >> I think there's a caching layer going on -- that appears to be what >> this block is about: >> >> ((and (boundp 'file-name-handler-alist) >> (setq handler (find-file-name-handler file 'vc-registered))) >> ;; handler should set vc-backend and return t if registered >> (funcall handler 'vc-registered file)) This is not a cache. It's a hook that was meant (I think) to support VC on remote file names (or maybe even within tarballs). I don't know that it's ever been used (then again, I'm biased because I never liked this hook, so don't take my word for it). > There's no particular reason for even a single directory not to > contain more than one of .svn, .git, RCS, CVS subdirectories and/or ,v > and s. files. That's right. It's perfectly normal to have more than one backend covering the same files. > VC should ask what backend to use in case of ambiguity, That tends to be rather annoying, in my experience. > and there should be a way to force reprompt. There is, it's called `vc-switch-backend` (except it doesn't prompt, but lets you cycle, at least if it still works: I haven't used it in a long while). Stefan ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 21:16 ` Stefan Monnier @ 2017-02-24 21:44 ` Richard Copley 2017-02-25 0:11 ` Stefan Monnier 2017-02-25 8:01 ` Michael Albinus 1 sibling, 1 reply; 17+ messages in thread From: Richard Copley @ 2017-02-24 21:44 UTC (permalink / raw) To: Stefan Monnier; +Cc: Emacs Development > That's right. It's perfectly normal to have more than one backend > covering the same files. > >> VC should ask what backend to use in case of ambiguity, > > That tends to be rather annoying, in my experience. Hypothetically? You're probably right. >> and there should be a way to force reprompt. > > There is, it's called `vc-switch-backend` (except it doesn't prompt, but > lets you cycle, at least if it still works: I haven't used it in a long > while). Ah, thanks. Seems to work (for files, not directories). ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 21:44 ` Richard Copley @ 2017-02-25 0:11 ` Stefan Monnier 0 siblings, 0 replies; 17+ messages in thread From: Stefan Monnier @ 2017-02-25 0:11 UTC (permalink / raw) To: Richard Copley; +Cc: Emacs Development >> That's right. It's perfectly normal to have more than one backend >> covering the same files. >>> VC should ask what backend to use in case of ambiguity, >> That tends to be rather annoying, in my experience. > Hypothetically? No: I've used a setup with combined CVS+RCS setup for quite a while (hence `vc-switch-backend`), and tried the "prompt" route but even by making the prompt lazy (i.e. only prompt when you want to actually run a command) I found it too annoying (and making the prompt lazy is actually hard to do with the current system, I only experimented with it via big ugly hack). > Ah, thanks. Seems to work (for files, not directories). It predates vc-dir, but it shouldn't be difficult to make it work in vc-dir. Stefan ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 21:16 ` Stefan Monnier 2017-02-24 21:44 ` Richard Copley @ 2017-02-25 8:01 ` Michael Albinus 2017-02-25 13:06 ` Stefan Monnier 1 sibling, 1 reply; 17+ messages in thread From: Michael Albinus @ 2017-02-25 8:01 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >>> I think there's a caching layer going on -- that appears to be what >>> this block is about: >>> >>> ((and (boundp 'file-name-handler-alist) >>> (setq handler (find-file-name-handler file 'vc-registered))) >>> ;; handler should set vc-backend and return t if registered >>> (funcall handler 'vc-registered file)) > > This is not a cache. It's a hook that was meant (I think) to support VC > on remote file names (or maybe even within tarballs). I don't know that > it's ever been used (then again, I'm biased because I never liked this > hook, so don't take my word for it). I don't know the situation with tarballs, but for Tramp it is implemented and useful. Tramp's implementation uses some caching indeed for performance improvement. See the comment in tramp-sh.el, heading `tramp-sh-handle-vc-registered'. > Stefan Best regards, Michael. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-25 8:01 ` Michael Albinus @ 2017-02-25 13:06 ` Stefan Monnier 2017-02-25 13:18 ` Michael Albinus 2017-02-25 13:36 ` tramp-sh-handle-vc-registered (was: vc with svn and git) Stefan Monnier 0 siblings, 2 replies; 17+ messages in thread From: Stefan Monnier @ 2017-02-25 13:06 UTC (permalink / raw) To: Michael Albinus; +Cc: emacs-devel > I don't know the situation with tarballs, but for Tramp it is > implemented and useful. Tramp's implementation uses some caching indeed > for performance improvement. See the comment in tramp-sh.el, heading > `tramp-sh-handle-vc-registered'. That's odd. Why doesn't it rely on the file-process and start-file-process handlers? Stefan ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-25 13:06 ` Stefan Monnier @ 2017-02-25 13:18 ` Michael Albinus 2017-02-25 13:36 ` tramp-sh-handle-vc-registered (was: vc with svn and git) Stefan Monnier 1 sibling, 0 replies; 17+ messages in thread From: Michael Albinus @ 2017-02-25 13:18 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: >> I don't know the situation with tarballs, but for Tramp it is >> implemented and useful. Tramp's implementation uses some caching indeed >> for performance improvement. See the comment in tramp-sh.el, heading >> `tramp-sh-handle-vc-registered'. > > That's odd. Why doesn't it rely on the file-process and > start-file-process handlers? For backends calling processes in order to check `vc-registered', it doesn't optimize. But for other backends, like cvs or svn, which do not call processes, it is *really* a performance boost. IIRC, it was recommended by a Tramp user running svn. If you're interested, I could try to find old messages comparing performance numbers w/ and w/o this optimization. Ten years ago, I guess. > Stefan Best regards, Michael. ^ permalink raw reply [flat|nested] 17+ messages in thread
* tramp-sh-handle-vc-registered (was: vc with svn and git) 2017-02-25 13:06 ` Stefan Monnier 2017-02-25 13:18 ` Michael Albinus @ 2017-02-25 13:36 ` Stefan Monnier 1 sibling, 0 replies; 17+ messages in thread From: Stefan Monnier @ 2017-02-25 13:36 UTC (permalink / raw) To: emacs-devel >> I don't know the situation with tarballs, but for Tramp it is >> implemented and useful. Tramp's implementation uses some caching indeed >> for performance improvement. See the comment in tramp-sh.el, heading >> `tramp-sh-handle-vc-registered'. > That's odd. Why doesn't it rely on the file-process and > start-file-process handlers? OK, I now looked at the code and I see why it's used. I guess the caching part of tramp-sh-handle-vc-registered is not indispensable (i.e. there must be a way to make the generic caching mechanism work well enough for vc-registered), but batching all requests into a single one is indeed pretty much impossible without some ad-hoc hack like this one (which relies on the property that vc-registered doesn't have too many side-effects, so you can do a "dry run" just to see what it would do). The only way I can see to get a similar result without ad-hoc hacks would be to introduce async file operations and then make vc-registered use them (since IIUC the benefit of tramp-sh-handle-vc-registered's batching is to avoid paying the latency N times). So vc-registered would start by firing all file-exists-p tests (an other operations) asynchronously and then collect their answers. Stefan ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-24 18:45 ` Karl Fogel 2017-02-24 20:04 ` Richard Copley @ 2017-02-28 14:54 ` Alfred M. Szmidt 2017-02-28 18:32 ` Karl Fogel 1 sibling, 1 reply; 17+ messages in thread From: Alfred M. Szmidt @ 2017-02-28 14:54 UTC (permalink / raw) To: Karl Fogel; +Cc: emacs-devel Alfred, want to have a try at that patch instead? I think it might not be very large. It looks like `vc-registered' in lisp/vc/vc-hooks.el is the key function. I'm swamped currently. :( ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: vc with svn and git 2017-02-28 14:54 ` vc with svn and git Alfred M. Szmidt @ 2017-02-28 18:32 ` Karl Fogel 0 siblings, 0 replies; 17+ messages in thread From: Karl Fogel @ 2017-02-28 18:32 UTC (permalink / raw) To: Alfred M. Szmidt; +Cc: emacs-devel ams@gnu.org (Alfred M. Szmidt) writes: > Alfred, want to have a try at that patch instead? I think it might > not be very large. It looks like `vc-registered' in > lisp/vc/vc-hooks.el is the key function. > >I'm swamped currently. :( Me too, alas. But this thread has produced some useful knowledge: 1) The proposed improvement is welcome (i.e., no one considers the current way of doing things to be optimal). 2) Remember to correctly handle directories that are under the control of more than one VCS (I do that trick sometimes myself, so I'm embarrassed I didn't think of it in my original followup; thanks to Richard Copley for pointing it out). 3) A thing looked like it might be a caching layer is actually a hook system, that some people are using. ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2017-02-28 18:32 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-02-24 15:23 vc with svn and git Alfred M. Szmidt 2017-02-24 15:35 ` Andreas Schwab 2017-02-24 15:54 ` Alfred M. Szmidt 2017-02-24 17:28 ` Karl Fogel 2017-02-24 17:49 ` Stefan Monnier 2017-02-24 18:11 ` Alfred M. Szmidt 2017-02-24 18:45 ` Karl Fogel 2017-02-24 20:04 ` Richard Copley 2017-02-24 21:16 ` Stefan Monnier 2017-02-24 21:44 ` Richard Copley 2017-02-25 0:11 ` Stefan Monnier 2017-02-25 8:01 ` Michael Albinus 2017-02-25 13:06 ` Stefan Monnier 2017-02-25 13:18 ` Michael Albinus 2017-02-25 13:36 ` tramp-sh-handle-vc-registered (was: vc with svn and git) Stefan Monnier 2017-02-28 14:54 ` vc with svn and git Alfred M. Szmidt 2017-02-28 18:32 ` Karl Fogel
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.