Darcs
From Wikipedia, the free encyclopedia
Darcs | |
---|---|
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
- ^ "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.
- Roundy, David (2005). "Darcs: distributed version management in Haskell". Proceedings of the 2005 ACM SIGPLAN workshop on Haskell Tallinn, Estonia: 1 - 4. ISBN 1-59593-071-X; doi:10.1145/1088348.1088349.
[edit] External links
- Darcs homepage
- Darcs manual
- Darcs wiki
- David Roundy's talk at FOSDEM 2006 about darcs' formalism at the Internet Archive Wayback Machine - (PDF)
- Interview with darcs' creator on its origins and ideas