- Darcs
-
Darcs Developer(s) Eric Kow (and others) Stable release 2.5.2 / March 14, 2011 Written in Haskell Operating system Unix, GNU/Linux, BSD, Mac OS X, Windows Type Revision control License GPL Website darcs.net Darcs is a distributed revision control system created by David Roundy; it was designed to replace traditional, centralized source control systems such as CVS and Subversion. Key features include the ability to choose which changes to accept from other repositories, interaction with either other local (on-disk) repositories or remote repositories via SSH, HTTP, or email, and an unusually interactive interface. The developers also emphasize the use of advanced software tools for verifying correctness: the expressive type system of the functional programming language Haskell enforces some properties, and randomized testing via QuickCheck verifies many others[1]. The name is usually sentence-cased, and is a recursive acronym for Darcs Advanced Revision Control System[2].
Contents
Model
Unlike most SCM software, which allows the user to view a source tree history as series of snapshots going back in time, a darcs source tree is modelled as a set of patches, where each patch is not necessarily ordered with respect to other patches i.e. the set of patches is only a partially ordered set. A particular version of the source tree corresponds to a particular set of patches; this set of patches may or may not have existed at some other point in time.
Shortcomings
Darcs has been criticized on the grounds of performance.[3][4] 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,[5] exponential merges have been minimized. Unfortunately, bugs still remain in which the merging of recursive conflicts fails[6].
History
Darcs evolved out of David Roundy'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. Version 2.5 contains many improvements over the 2.4 series. Most notable are the performance improvements in
record
andpull
and the--bisect
option for trackdown.Related
A related project called Camp ("Commute and merge patches") attempts to develop Darcs's patch algebra more formally, including the use of Coq to prove the correctness of some of its aspects. Camp remains close to the Darcs project and the authors expect the two projects to merge again once Camp is more mature.
See also
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.
- ^ Commit in which David changes the acronym's meaning
- ^ Simon Marlow, Re: current status of darcs, darcs-users discussion group, March 7, 2007
- ^ Robert Fendt, DVCS Round-Up: One System to Rule Them All?--Part 1, Linux Foundation Developer Network, January 9, 2009
- ^ ConflictsFAQ, Darcs Wiki
- ^ Issue 1520 Irrefutable pattern failed for pattern Data.Maybe.Just a2, Darcs Bug Tracker
- Roundy, David (2005). "Darcs: distributed version management in Haskell". Proceedings of the 2005 ACM SIGPLAN workshop on Haskell Tallinn, Estonia. pp. 1–4. ISBN 1-59593-071-X; doi:10.1145/1088348.1088349.
External links
- Official website
- Darcs manual
- Darcs wiki
- David Roundy's talk at FOSDEM 2006 about darcs' formalism at the Wayback Machine - (PDF)
- Interview with darcs' creator on its origins and ideas
- darcsweb Tool to serve darcs repositories via [HTTP]
- An Algebra of Patches, Ian Lynagh, October 30, 2006
- What makes Camp and Darcs unique? Video presentation.
- Patch-Tag: Project Hosting for Darcs
- Darcs Den: Project Hosting for Darcs
Revision control software Years, where available, indicate the date of first stable release. Systems with names in italics are no longer maintained or have planned end-of-life dates.Local only - PVCS (1985)
Client-server Free/open-source- CVS (1990)
- CVSNT (1998)
- Subversion (2004)
Proprietary- Software Change Manager (1970s)
- ClearCase (1992)
- CMVC (1994)
- Visual SourceSafe (1994)
- Perforce (1995)
- StarTeam (1995)
- MKS Integrity (2001)
- AccuRev SCM (2002)
- SourceAnywhere (2003)
- Vault (2003)
- Team Foundation Server (2005)
- Rational Team Concert (2008)
Distributed Free/open-sourceProprietary- TeamWare (1990s?)
- Code Co-op (1997)
- BitKeeper (1998)
- Plastic SCM (2006)
Concepts - Category
- Comparison
- List
Categories:- Free revision control software
- Free software programmed in Haskell
- Free cross-platform software
- Distributed revision control systems
Wikimedia Foundation. 2010.