emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Limitations of Emacs' vc when using modern backends


From: Juliusz Chroboczek
Subject: Re: Limitations of Emacs' vc when using modern backends
Date: Thu, 15 Dec 2005 18:55:17 +0100
User-agent: Gnus/5.110004 (No Gnus v0.4) Emacs/21.4 (gnu/linux)

>> If multiple revisions match, the latest one is chosen.

> And this is a feature of vc-darcs rather than of darcs itself, right?

No, it's actually a feature of Darcs itself.

> The same thing proably happens for you: "Update" may stand for
> "Update version number to 1.3" at some point and to "Update version
> number to 1.6" at the other, so the "vc-darcs.el~Update" can become
> out of date as well.

Yes, exactly.

> The only problem I see with `canonical-revision' is that for some backends
> it may be very costly (for CVS it requires a round trip to the repository),
> and it may suffer from race conditions.

Good point about the cost (see below).  On the other hand, there's no
race condition if you do things in the right order: first normalise
the version, then fetch the file from the backend using the canonical
identifier.

> Now `canonical-revision' is more general, but I'm wondering: where would it
> be used other than in `vc-version-other-window'?

In the current vc-darcs, it's also used by vc-diff.  I haven't checked
exhaustively if there are other instances where it might be useful.

I suggest that for backends that need it vc-BACKEND-canonical-revision
should be compulsory, and we should optionally allow checkout and diff
to return the canonical identifier(s).  (What a pity elisp doesn't
have multiple return values).  I believe that the former should be
considered for 22, while the latter is something we might need more
time to experiment with.

And adding generic support for completion is definitely a good idea.
Bug again it might be premature to aim for having it in 22.

                                        Juliusz




reply via email to

[Prev in Thread] Current Thread [Next in Thread]