Darcs

From Wikipedia, the free encyclopedia

Darcs
darcs logo
Developed by David Roundy
Latest release 2.0.0 / April 7, 2008
OS Unix, Linux, BSD, Mac OS X, Windows
Genre revision control
License GPL
Website Darcs home

Darcs is a distributed revision control system by David Roundy that was designed to replace traditional centralized source control systems such as CVS and subversion. Two particular features in its design distinguish it from CVS. Each copy of the source tree acts as a full repository, allowing several different versions to be maintained in different locations. Patches are global to the repository and are subject under certain conditions to reordering, as governed by the project's "theory of patches".

The name is an acronym for David's Advanced Revision Control System, but is usually written lowercase (darcs), except at the beginning of sentences.

In basic usage, users get a copy of a repository, make any changes, record the changes, pull changes from other repositories, and finally push or send changes to other repositories. To start a new repository, users can init any directory.

Other repositories can be local directories, or accessed by SSH or HTTP protocols. Changes can be submitted by email in situations where the user lacks permission to write to another repository.

Darcs is written in the functional programming language Haskell; among other tools, it uses QuickCheck[1].

Most of darcs' commands are interactive, allowing e.g. users to commit changes or pull specific files selectively. This feature is designed to encourage more specificity in patches. As a result of this interactivity, darcs has fewer distinct commands than many comparable revision control systems, and most users find it easier to use than competing systems.[citation needed]

Contents

[edit] Shortcomings

Darcs has been criticized on the grounds of performance (see e.g. [1]). The worst of these issues was the Darcs 1.x merge algorithm that, in the worst case, could do exponential work to merge some conflicts. However, that issue was corrected in Darcs 2.

[edit] History

Darcs evolved out of David's efforts to design a new patch format for GNU arch in June 2002. These discussions didn't lead to any code being committed to arch, but did lead to his theory of patches. After writing an initial version of darcs in C++, the Haskell version was written in Autumn 2002 and released to the public in April 2003.

[edit] See also

[edit] References

  1. ^ "One of the problems I had with the initial C++ darcs was that I had no unit testing code. Within two weeks of the first darcs record, I started using QuickCheck to test the patch functions, and the same day I fixed a bug that was discovered by QuickCheck. QuickCheck makes it very easy to define properties that functions must have, which are then tested with randomly generated data." From page 2 of David Roundy 2005.

[edit] External links

Wikibooks
Wikibooks has a book on the topic of