Next: , Previous: Top, Up: Top

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, 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.


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