all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Unknown <unknown@unknown.invalid>
To: emacs-devel@gnu.org
Subject: My plans for VC mode
Date: Sat, 22 Nov 2014 08:33:50 -0500 (EST)	[thread overview]
Message-ID: <20141122133351.46279382C23@snark.thyrsus.com> (raw)

I have noted in previous mail that the VC code lacks a clean set of
primitives to deal with branching.  My goal is to fix that.

In the way is the fact that the VC backend API is still something of
a mess.  Everyone who has previously modified it (including me in 2007
when I did the fileset rewrite) has tried to preserve backward
compatibility to the year zero.  As a result, the upper-level code
has never gotten completely divorced from the file-oriented back ends.

The merge command is a particular trouble spot where the back-end model
pokes upward into what should be VCS-independent - as is revealed
by the ";; FIXME: This is CVS/RCS/SCCS specific." in vc/vc.el.
Because of the code that calls out, SVN merge in particular plain
doesn't work right - it assumes RCS behavior in SVN revision numbers.

A related effect of trying to preserve backward compatibility is that
the backend API has more entry points than it should and is harder to
understand than it should be. I had my nose rubbed in this writing the
support for SRC. Given the advantages of having written both VC mode
and SRC and the freedom to modify SRC to make VC-mode happy, it was
*way* more difficult than it should have been.

Accordingly, I have concluded that it is time to chuck backward
compatibility and rewrite tha back-end API, simplifying as radically
as I can and enforcing much stricter separation between the VC upper
layer and the back ends.

This is going to break out-of-tree back ends - not in any way that is
fundamentally difficult to fix, but it will break them. I've already had
one polite complaint about that in email, but explained that we can't
be stuck with the cruft and the previous design mistakes forever.

I'm explaining this, while "make bootstrap" runs to test a build,
because it may cause some minor disruptions.  I'm a little worried
about breaking CVS support; that back end is both the worst hairball
in the file-oriented group (SCCS/RCS/CVS/SRC) and the one I'm least
able to test well.  I could use some help with this if there is
anyone on the list using vc-cvs regularly.

While I do branching I'm also going to look at removing the elaborate
caching the older back ends use to avoid disk traffic as much as
possible.  That made sense when I first wrote it twenty-odd years
ago, but it's been a chronic source of TOCTOU bugs and other
coherency problems ever since.  Disks are much faster now; it's
probably time for the state-heuristic stuff to die.
-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>

The saddest life is that of a political aspirant under democracy. His
failure is ignominious and his success is disgraceful.
        -- H.L. Mencken



             reply	other threads:[~2014-11-22 13:33 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-22 13:33 Unknown [this message]
2014-11-22 14:17 ` My plans for VC mode Jan D.
2014-11-22 16:29   ` Eric S. Raymond
2014-11-22 16:44     ` Jan D.
2014-11-22 14:33 ` Dmitry Gutov
2014-11-22 16:37   ` Eric S. Raymond
2014-11-22 17:46     ` Dmitry Gutov
2014-11-22 18:08       ` Eric S. Raymond
2014-11-23  1:27         ` Dmitry Gutov
2014-11-22 22:32       ` Stefan Monnier
2014-11-23  1:01         ` Dmitry Gutov
2014-11-23  6:25         ` Eric S. Raymond
2014-11-22 23:17   ` Steinar Bang
2014-11-23 20:02     ` Eric S. Raymond
2014-11-23 20:11       ` Eli Zaretskii
2014-11-22 16:11 ` Stefan Monnier
2014-11-22 16:41   ` Eric S. Raymond
2014-11-22 16:59     ` Dieter Deyke
2014-11-22 22:34     ` Stefan Monnier
2014-11-23 19:58       ` Eric S. Raymond
2014-11-24  6:40         ` Dieter Deyke
2014-11-24  7:50           ` Eric S. Raymond
2014-11-24  7:55             ` Kan-Ru Chen (陳侃如)
2014-11-24  8:07               ` Eric S. Raymond
2014-11-24 14:33         ` Stefan Monnier
2014-11-24 17:57           ` Eric S. Raymond
2014-11-23 19:27     ` Ivan Shmakov
2014-11-23 20:10       ` Eric S. Raymond
2014-11-22 19:02 ` Michael Albinus
2014-11-23  6:26   ` Eric S. Raymond
2014-11-23  8:23     ` Michael Albinus

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=20141122133351.46279382C23@snark.thyrsus.com \
    --to=unknown@unknown.invalid \
    --cc=emacs-devel@gnu.org \
    /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.