Darcs

From Encoresoup - The Ultimate Guide to Free/Open Source Software

Jump to: navigation, search
This article contains content from the Wikipedia article:
Darcs
history contributors
Darcs
darcs logo
Developer: David Roundy
Stable release

2.0.2  ({{{3}}})

Preview release

2.0.0  ({{{3}}})warning.png"2.0.0;{{{3}}}" cannot be used as a page name in this wiki.

OS: Unix, Linux, BSD, Mac OS X, Windows
Genre: revision control
License: GPL
Website: [[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.

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. Although the issue was not completely corrected in Darcs 2 (it is still possible to experience an exponential merge with recursive conflicts, explained here), exponential merges have been minimized.

[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

  • Comparison of revision control software

[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
Retrieved from "http://encoresoup.net/Darcs"
Personal tools

Pico USB Flash Drive (8Gb) [ThinkGeek] Micro Spy Remote [ThinkGeek] Doctor Who TARDIS 4 Port USB Hub [ThinkGeek]