Clementson's Blog

Bits and pieces (mostly Lisp-related) that I collect from the ether.

July 2005
Sun Mon Tue Wed Thu Fri Sat
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Jun  Aug

All the cool kids are using darcs

Sunday, July 10, 2005

Revision control systems are a bit like editors in that developers get very attached to them and resist using ones that they're not familiar with. To date, CVS has been the tool of choice for most collaborative open source Lisp projects. However, CVS (in addition to having a number of issues) is better suited for a development style that is well organized with a set of approved contributors, a dependable server and a stong, central maintainer(s) who is dedicated to keeping the source tree up-to-date with any patches provided from external sources. For some open source projects, that's fine; however, for others, a more decentralized source management style is more effective (see here for a discussion of the differences in approach). With a decentralized SCM, the primary emphasis is on being able to effectively support multiple developers working asynchronously and to be able to share/merge the changes from the different developers. A number of different decentralized revision control systems have been used for Lisp projects in the past; however, darcs is rapidly gaining in popularity.

In CVS, the primary object is the source file in a centralized repository and there is a defined "flow" to the patches that are applied against objects in the repository. On the other hand, the primary darcs object is the "changeset" (which can span multiple files) and every instance of a project is a separate "branch" (which may share code with other branches or which may evolve separately). Changesets may be applied to different branches of the project that have evolved in different ways (so the patches need not be applied in the same order). While most version control systems version files, a darcs repository is just a collection of patches and a particular file version is just the set of patches that were applied in order to build it. Dave Roberts has summarized some of the benefits of darcs and compared it to Arch (another distributed revsion control system) in his weblog. Linux Weekly News has also given a good review of darcs. Some of it's main positive features are:

It looks like a lot of Lisp developers are moving their projects over to darcs now: If you're using darcs with Emacs, there are a number of different utilities that are available. Although there is no "definitive" darcs-mode yet for Emacs, the one that Luke Gorrie wrote is a "minimalist" darcs-mode that lets you easily see what changes have been applied to a given source member (or all members in a project) and revert whatever changes you might have made.

emacs Copyright © 2005 by Bill Clementson