From: Dmitry Gutov <dgutov@yandex.ru>
To: Michael Albinus <michael.albinus@gmx.de>
Cc: 20637@debbugs.gnu.org
Subject: bug#20637: incompatible, undocumented change to vc-working-revision
Date: Wed, 13 Apr 2016 23:49:12 +0300 [thread overview]
Message-ID: <bbdc2630-f791-dace-15d0-c1e73d8c88fc@yandex.ru> (raw)
In-Reply-To: <87oa9dzgl0.fsf@gmx.de>
Hey Michael,
On 04/13/2016 06:14 PM, Michael Albinus wrote:
> vc-working-revision shall return nil for unregistered files. vc-state
> shall return a non-nil value, 'unregistered.
That sounds fine to me in principle, but I don't think we can get there
for Emacs 25.1, without paying with lower performance (*). The current
code is slower than what's in 24.5 already, as a result of the
aforementioned revision.
> You cannot guarantee this. Anybody is free to call the functions with
> unregistered files.And in the vc-state case, it is even documented that
> this could happen.
Both true. However, that vc-state's behavior has been different from its
documentation in this regard, for many releases.
>> In particular, it breaks an assumption I made when fixing #11757, that
>> vc-git-state never receives an unregistered file as input. So if you
>> evaluate (vc-state "1") now, it'll return `up-to-date'.
>
> This assumption could be kept if vc-state filters such unregistered
> files out.
Problem: vc-registered is slower than vc-backend. Like, orders of
magnitude slower. vc-backend caches the result of the previous
vc-registered invocation in vc-file-prop-obarray. But if we call
vc-registered directly, we go the whole way each time, including calling
vc-BACKEND-registered.
Yes, both vc-state and vc-working-revision cache their results in a
property, so we're only paying the added overhead when the file is
opened, reverted, etc, but it's still a price. Don't you think it is a
problem?
> I've prepared a patch which just covers the case that a file is
> unregistered, in both vc-state and vc-working-revision. It is a very
> small change, that I believe it could still go into the emacs-25 branch.
Aside from the above, is there a reason to keep using
vc-responsible-backend instead of vc-backend, in vc-state and
vc-working-revision? It's also slower than vc-backend.
(*) If you _really_ think that vc-state should ever return
`unregistered' (personally, I've never found that distinction useful; we
could just as well update the docstring that it returns nil in that
case), I think the way to get that is to make vc-git-registered return
non-nil for all files inside Git-controlled repositories, and to make
vc-git-state return `unregistered' for unregistered files (and same for
other backends). But it would be a bigger change, better suitable for
the next release.
next prev parent reply other threads:[~2016-04-13 20:49 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-23 23:49 bug#20637: incompatible, undocumented change to vc-working-revision Glenn Morris
2016-03-28 23:28 ` Dmitry Gutov
2016-03-29 18:13 ` Michael Albinus
2016-04-01 0:36 ` Dmitry Gutov
2016-04-09 19:34 ` Michael Albinus
2016-04-09 20:42 ` Dmitry Gutov
2016-04-10 8:00 ` Michael Albinus
2016-04-10 16:00 ` Dmitry Gutov
2016-04-10 18:09 ` Michael Albinus
2016-04-10 18:58 ` Dmitry Gutov
2016-04-11 6:55 ` Michael Albinus
2016-04-13 20:55 ` Dmitry Gutov
2016-04-14 7:10 ` Michael Albinus
2016-04-14 13:53 ` Dmitry Gutov
2016-04-14 15:26 ` Michael Albinus
2016-04-15 0:33 ` Dmitry Gutov
2016-04-15 13:13 ` Michael Albinus
2016-04-14 15:23 ` Eli Zaretskii
2016-04-13 15:14 ` Michael Albinus
2016-04-13 20:49 ` Dmitry Gutov [this message]
2016-04-14 7:21 ` Michael Albinus
2016-04-14 14:20 ` Dmitry Gutov
2016-04-14 18:31 ` Michael Albinus
2016-04-15 0:20 ` Dmitry Gutov
2016-04-15 13:11 ` Michael Albinus
2016-04-17 0:44 ` Dmitry Gutov
2016-04-18 12:27 ` Michael Albinus
2016-04-18 12:33 ` Dmitry Gutov
2016-04-18 12:46 ` Michael Albinus
2016-04-18 1:40 ` Dmitry Gutov
2016-04-15 1:01 ` Dmitry Gutov
2016-04-15 1:04 ` Dmitry Gutov
2016-04-15 13:23 ` Michael Albinus
2016-04-17 0:17 ` Docstrings and manuals, was: " Dmitry Gutov
2016-04-17 8:49 ` Docstrings and manuals Michael Albinus
2016-04-17 10:50 ` Dmitry Gutov
2016-04-17 11:16 ` Michael Albinus
2016-04-17 11:42 ` Dmitry Gutov
2016-04-17 12:19 ` Michael Albinus
2016-04-17 13:12 ` Dmitry Gutov
2016-04-17 15:14 ` Eli Zaretskii
2016-04-17 16:39 ` Michael Albinus
2016-04-17 19:39 ` Dmitry Gutov
2016-04-17 15:12 ` Eli Zaretskii
2016-04-17 19:59 ` Dmitry Gutov
2016-04-18 2:30 ` Eli Zaretskii
2016-04-18 12:55 ` Phillip Lord
2016-04-18 15:35 ` Marcin Borkowski
2016-04-18 15:47 ` Stefan Monnier
2016-04-18 16:30 ` Marcin Borkowski
2016-04-18 18:56 ` Eli Zaretskii
2016-04-18 19:33 ` Stefan Monnier
2016-04-18 19:39 ` Eli Zaretskii
[not found] ` <<83ziss9sml.fsf@gnu.org>
2016-04-17 15:54 ` Drew Adams
2016-04-17 15:03 ` Eli Zaretskii
2016-04-17 15:15 ` Dmitry Gutov
2016-04-17 16:23 ` Eli Zaretskii
2016-04-17 20:22 ` Dmitry Gutov
2016-04-18 2:33 ` Eli Zaretskii
2016-04-18 8:38 ` Richard Stallman
2016-04-18 9:50 ` Dmitry Gutov
2016-04-19 0:25 ` Richard Stallman
2016-04-19 7:59 ` Dmitry Gutov
2016-04-19 23:51 ` Richard Stallman
2016-04-17 0:27 ` bug#20637: incompatible, undocumented change to vc-working-revision Dmitry Gutov
2016-04-18 1:33 ` Dmitry Gutov
2016-04-18 12:28 ` Michael Albinus
2016-04-18 12:37 ` Dmitry Gutov
2016-04-18 12:53 ` Michael Albinus
2016-04-18 12:58 ` Dmitry Gutov
2016-04-18 13:06 ` Michael Albinus
2016-04-18 16:34 ` John Wiegley
2016-04-18 14:55 ` vc-state and unregistered (was: bug#20637: incompatible, undocumented change to vc-working-revision) Michael Albinus
2016-04-18 21:11 ` vc-state and unregistered Dmitry Gutov
2016-04-19 8:10 ` Michael Albinus
2016-04-19 8:21 ` Dmitry Gutov
2016-04-19 8:31 ` Michael Albinus
2016-04-19 8:43 ` Dmitry Gutov
2016-04-24 12:11 ` Michael Albinus
2016-04-24 12:21 ` Dmitry Gutov
2016-04-24 12:45 ` Michael Albinus
2016-04-24 12:49 ` Dmitry Gutov
2016-04-24 13:07 ` Michael Albinus
2016-04-24 13:13 ` Dmitry Gutov
2016-04-24 13:24 ` Michael Albinus
2016-04-24 13:27 ` Dmitry Gutov
2016-04-24 14:03 ` Michael Albinus
2016-04-24 17:23 ` Dmitry Gutov
2016-04-24 17:35 ` Dmitry Gutov
2016-04-24 18:13 ` Michael Albinus
2016-04-24 18:58 ` Dmitry Gutov
2016-04-24 19:41 ` Michael Albinus
2016-04-24 20:43 ` Dmitry Gutov
2016-04-24 13:08 ` Dmitry Gutov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bbdc2630-f791-dace-15d0-c1e73d8c88fc@yandex.ru \
--to=dgutov@yandex.ru \
--cc=20637@debbugs.gnu.org \
--cc=michael.albinus@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.