On 10/11/05, Helmut Eller heller@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 awkward.
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.