Darcs

Darcs
Darcs
darcs logo
Developer(s) Eric Kow (and others)
Stable release 2.5.2 / March 14, 2011; 8 months ago (2011-03-14)
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 and pull 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

  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.
  2. ^ Commit in which David changes the acronym's meaning
  3. ^ Simon Marlow, Re: current status of darcs, darcs-users discussion group, March 7, 2007
  4. ^ Robert Fendt, DVCS Round-Up: One System to Rule Them All?--Part 1, Linux Foundation Developer Network, January 9, 2009
  5. ^ ConflictsFAQ, Darcs Wiki
  6. ^ Issue 1520 Irrefutable pattern failed for pattern Data.Maybe.Just a2, Darcs Bug Tracker

External links


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • Darcs — Тип система управления версиями Разработчик Дэвид Рунди (David Roundy) Написана на Haskell Операционная система Unix, Linux, BSD, Mac OS X, Microsoft Windows …   Википедия

  • Darcs — Entwickler David Roundy und andere Aktuelle Version 2.5.0 (30. Oktober 2010) Betriebssystem Unix, Linux, BSD, Mac OS X, Windows Programmier­sprac …   Deutsch Wikipedia

  • Darcs — Dernière version 2.5.2 (14 mars 2011) [ …   Wikipédia en Français

  • Comparison of revision control software — The following is a comparison of revision control software. The following tables includes general and technical information for notable revision control and software configuration management (SCM) software. This is an incomplete list, which may… …   Wikipedia

  • Patch-Tag — URL …   Википедия

  • Сравнение систем отслеживания ошибок — Эта страница содержит сравнение как систем отслеживания ошибок так и систем управления проектами. Содержание 1 Системы управления проектами 2 Системы отслеживания ошибок …   Википедия

  • David Roundy — Born 1973 …   Wikipedia

  • Git — Développeurs Junio Hamano Linus Torvalds et contributeurs Dernière version …   Wikipédia en Français

  • Haskell — Класс языка: функциональный, ленивый, модульный Тип исполнения: компилируемый, интерпретируемый Появился в: 1990 …   Википедия

  • Git — Git …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”