Weekly Edition Return to the Development pageSponsored link Serve your customers, not your servers, with VERIO Linux VPS. Full-access test-drive here. |
The Darcs Revision Control System
Darcs is a relatively new revision
control system that was written in Haskell by physicist David Roundy.
The system is designed around a "theory of patches" which has its roots
in quantum mechanics. Darcs has been released under version 2 of
the GNU General Public License.
The
Darcs manual
explains the project in more detail:
Darcs is a revision control system, along the lines of CVS or arch. That means that it keeps track of various revisions and branches of your project, allows for changes to propagate from one branch to another. Darcs is intended to be an ``advanced'' revision control system. Darcs has two particularly distinctive features which differ from other revision control systems: 1) each copy of the source is a fully functional branch, and 2) underlying darcs is a consistent and powerful theory of patches.
The manual further describes these two distinctions: Functional Branches - "This has several advantages, since you can harness the full power of darcs in any scratch copy of your code, without committing your possibly destabilizing changes to a central repository." The Theory of Patches - "This patch formalism means that darcs patches have a set of properties, which make possible manipulations that couldn't be done in other revision control systems. First, every patch is invertible. Secondly, sequential patches (i.e. patches that are created in sequence, one after the other) can be reordered, although this reordering can fail, which means the second patch is dependent on the first. Thirdly, patches which are in parallel (i.e. both patches were created by modifying identical trees) can be merged, and the result of a set of merges is independent of the order in which the merges are performed. This last property is critical to darcs' philosophy, as it means that a particular version of a source tree is fully defined by the list of patches that are in it, i.e. there is no issue regarding the order in which merges are performed." Darcs differs from other revision control systems: "In the world of darcs, the source tree is not the fundamental object, but rather the patch is the fundamental object. Rather than a patch being defined in terms of the difference between two trees, a tree is defined as the result of applying a given set of patches to an empty tree. Moreover, these patches may be reordered (unless there are dependencies between the patches involved) without changing the tree. As a result, there is no need to find a common parent when performing a merge. Or, if you like, their common parent is defined by the set of common patches, and may not correspond to any version in the version history." Here is a brief list of Darcs features:
Darcs version 1.0 was released this week, the Linux kernel is being used as a test of the system on a large project. "With the release of 1.0, Roundy is also making available a copy of the Linux kernel as a darcs repository. With this proving ground, darcs is expected to soon scale to perform well on the largest projects as well." Darcs could prove to be a very useful tool for numerous open-source development projects. Project leaders should certainly consider its adoption. (Log in to post comments)
The Darcs Revision Control System Posted Nov 11, 2004 13:50 UTC (Thu) by zooko (subscriber, #2589) [Link] I'm a fan of darcs. I tried it out after writing my http://zooko.com/revision_control_quick_ref.html, and I've been using it ever since. v1.0 still has a few known issues. Certain pathological (or at least confused) behavior on the part of the user can cause darcs to get into a "wedged" state that requires careful correction in order to recover. That's the worst outstanding problem in darcs as far as I know. Of interest to LWN subscribers, there is a darcs mirror of the Linux kernel: I think the darcs land view of the kernel is losing historical information because it is going from BitKeeper to CVS to darcs. So for example although BitKeeper and darcs both handle file renames properly, CVS doesn't so that information gets lost. Maybe someone who is legally allowed to use BitKeeper could set up a better mirror into darcs land. Regards, Zooko
The Darcs Revision Control System Posted Nov 11, 2004 13:56 UTC (Thu) by zooko (subscriber, #2589) [Link] Oh, and another known issue in darcs v1.0 is that the initial "get" (equivalent to a cvs "checkout") stores the entire history in RAM at one point. For example, I'm now doing a "darcs get" on the Linux kernel, and it is using 504 MB virtual... After I've finished this darcs get, I'll subsequently be able to do "darcs pulls" to update the kernel source while using only an amount of RAM proportional to the new patches that I'm getting.
The Darcs Revision Control System Posted Nov 11, 2004 16:10 UTC (Thu) by hmh (subscriber, #3838) [Link] Eek!
Is that memory usage swap-friendly? If so, that's not so bad since 1GB of swap area is not too much (I have a lot more, as backstorage for tmpfs anyway, I assume many do the same on their development boxes)...
But still, it is quite non-scalable...
The Darcs Revision Control System Posted Nov 11, 2004 17:25 UTC (Thu) by larryr (guest, #4030) [Link] I think maybe it should be called "darcs beta 1.0" because there are several ways in which not only is it not really ready for widespread use, but it is not clear to me how it is going to get there. But I hope it will, because I prefer it to the way arch has been so far, and I tend to think there will only be one dominant patch-oriented open source solution. Larry
The Darcs Revision Control System Posted Nov 11, 2004 20:06 UTC (Thu) by bfields (subscriber, #19510) [Link] > Is that memory usage swap-friendly?
From his post to lkml announcing the darcs mirror of linux
"Be forewarned that darcs is a bit of a memory hog when run with large
The Darcs Revision Control System Posted Nov 12, 2004 4:06 UTC (Fri) by ncm (subscriber, #165) [Link] Memory management for substantial programs written in garbage-collected languages is always tough.
The Darcs Revision Control System Posted Nov 12, 2004 18:37 UTC (Fri) by larryr (guest, #4030) [Link] I think the performance problems with darcs may be related to deriving metadata information at runtime rather than storing it explicitly in files or filenames; in other words the fundamental approach is resource intensive rather than the particular implementation. Larry
The Darcs Revision Control System Posted Nov 12, 2004 22:02 UTC (Fri) by giraffedata (subscriber, #1954) [Link] What does the database look like? I don't like things I can't patch up with Emacs, or process with other standard text tools, if I get desperate.
database format Posted Nov 12, 2004 22:48 UTC (Fri) by stevenj (subscriber, #421) [Link] All of the Darcs data is stored in a _darcs subdirectory of your project. The revisions are stored as a subdirectory full of gzipped patch files. The rest of the data (lists of changelog comments, preferences, etcetera) are stored in plain text files.
|
Copyright © 2004, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds
Powered by Rackspace Managed Hosting.