[slime-devel] Re: Darcs [was: Fix utf-8 net-encoding for Allegro]

Svein Ove Aas svein.ove at aas.no
Tue Oct 11 11:47:26 UTC 2005

On 10/11/05, Helmut Eller <heller at common-lisp.net> wrote:
> * Svein Ove Aas [2005-10-11 00:52+0200] writes:
> > Have you given any thought to switching to a distributed RCS such as
> > Darcs?
> Not seriously, but I too get increasingly annoyed with CVS.
> Especially commits to the larger files slime.el and ChangeLog are now
> rather slow.  (Not to mention the bug in Emacs' VC package which makes
> it impossible to use compression with CVS.)
> I used Darcs only a tiny bit to fetch the code of other people and I
> don't know how well it works in a multi-user setting.  My primary
> concerns are:
> - is there a smooth way for the transition so that we don't lose
>   information like log entries and "who did what"?
The simple answer is yes - Darcs functionality is a superset of CVS,
and people have already looked at the problem.

The ChangeLog is a bit of a problem. Darcs doesn't need it, and
shouldn't have it; where CVS is usually a linear sequence of commits,
Darcs is based on a pretty much arbitrary graph of patches
(changesets), some of which depend on others. This doesn't lend itself
well to having changelogs. Darcs provides its own solution, namely the
commit messages (which contain all the information we currently put in
the changelog).

A Darcs->CVS converter would have to autogenerate the changelog, which
is fine; we could even use the output of "darcs changes" with no
filtering. The other way around is probably impossible, though. There
are frequently single commits with multiple changelog entries, which
means it's impossible to tell which belongs to which; also, commits
are per-file, not per-changeset.

We wouldn't actually *lose* anything by moving to Darcs, but we're
losing information (relatively speaking) every time we commit to CVS.

> - how mature is Luke's darcs-mode?  Or is there something better?
There are various modes at
http://www.darcs.net/DarcsWiki/CategoryEmacs, but personally I've
never felt a need for any of them - I use Darcs directly.
The general state of things seems to be "immature, but still better than CVS".

> > It seems like it would match the development style much better,
> > not to mention make it easier to track down problems such as the one
> > that killed Allegro recently. You could still have an anonymous CVS
> > gateway for those that don't wish to install new software, of course.
> It would be useful, if we could keep CVS as the default and offer Darcs
> as alternative until we know that Darcs is up to the task.  Is that
> possible?
No, by which I mean "not usefully"; you lose the Darcs metadata once
you reintegrate a patch with the CVS tree. Since this same metadata is
required to keep track of divergent trees, things would quickly get

It's probable that the best way is to jump in feet first. Even so, I'm
putting a raw converted CVS copy of Slime at
http://brage.info/~svein/repos/slime-cvs/, so you can try before you
buy. (Said conversion is going to take a while; having a raw copy of
the CVS repository would help.)

On the other hand, if the official Slime tree is to use Darcs, then
everyone with commit access also ought to use it; integrating CVS
patches with a Darcs tree would be an annoying, neverending job. It
is, admittedly, a large change; I wouldn't blame anyone for keeping
the status quo.

Also see http://darcs.net/DarcsWiki/DifferencesFromCVS for the most
obvious differences.

More information about the slime-devel mailing list