1 Introduction

cl-darcs is an implementation of the darcs version control system
written in Common Lisp.

Darcs was originally developed by David Roundy. Its distinguishing
features among other version control systems are that it is
distributed and based on a system of patch algebra. The distributedness
means that unlike CVS and SVN, every checked-out copy of a tree is a
branch or an archive in its full right, where patches can be recorded
and shared. This makes new models of distributed development easy. The
patch algebra means that the program can in many cases be smart about
how patches interact with eachother. You can pull patches from one
archive to another, perhaps in different order or leaving some patches
behind, and the program will try to figure out how those patches would
look in this new context. See http://www.darcs.net, the official
web page.

The original darcs implementation is written in Haskell, and requires
extensions present only in GHC, the Glasgow Haskell Compiler. However,
GHC is not available for all platforms, and can be different to port as
it requires itself as compiler. Therefore I started to write cl-darcs
in (mostly) portable Common Lisp, to be able to use darcs on my
favourite system.1

cl-darcs is still in an early stage of development, so expect to find
bugs and unhandled corner cases (or, just as likely, unhandled
middle-of-the-room cases). However, it is already useful for simple
usage.

Footnotes

[1] That is, NetBSD/powerpc. CLISP runs well
there, and recently SBCL has been ported as well.