Darcs

From Wikipedia, the free encyclopedia

Darcs
darcs logo
Developer: David Roundy
Latest release: 1.0.8 / June 16, 2006
OS: Unix, Linux, BSD, Mac OS X, Windows
Use: revision control
License: GPL
Website: Darcs home
The correct title of this article is darcs. The initial letter is shown capitalized due to technical restrictions.

Darcs is a distributed revision control system by David Roundy that was designed to replace the centralized CVS. 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 short for David's Advanced Revision Control System, but is usually capitalized like a non-proper noun; i.e., it is given lowercase letters (darcs), except at the beginnings 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].

Many of its commands are interactive, allowing 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.

Contents

[edit] Bugs

darcs currently has a number of significant bugs (see e.g. [1]). The most severe of them is "the Conflict bug" - an exponential blowup in time needed to perform conflict resolution during merges, reaching into the hours and days for "large" repositories. A redesign of the repository format and wide-ranging changes in the codebase are planned in order to fix this bug, and work on this is planned to start in Spring 2007 [2].

[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