[darcs-users] SCM comparison

'Andrew Pimlott' andrew at pimlott.net
Fri Aug 13 06:53:35 UTC 2004


I took a stab at some material about darcs for the "Better SCM
Initiative".[1]  I would appreciate any review before I send it.
(David, I would feel better having your express approval.)

As I did this, I found the points of comparison to be rather vague and
arbitrary, and I don't know that they show darcs in the best light.
However, the author says he's updating it, so perhaps I can suggest some
more precise and discerning criteria.

As for methodology, I mostly copied the entry for arch and edited it.
Many of the entries start with an overall rating, and sometimes I wasn't
sure what to put for darcs.  Please feel free to correct.

First, there is a blurb on the front page, which I made up:

    A distributed revision control system written by David Roundy, built
    on an elegant theory of patches.

Next, there is a short summary page about darcs.  I took some snippets
from the manual and added a few words to make it similar to other
summary pages.

    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 patch-centric model supports multi-file commits, renames,
    branching, and merging in a natural way.  It is also quite simple:
    The interface is built around a handful of commands for creating and
    transmitting patches.

    Darcs is a newcomer compared to Arch and Subversion, and still shows
    some rough edges.  However, it is in production use by a number of
    projects and is nearing a 1.0 release.

Finally, there is the comparison, which is a diff against an XML file:

Index: scm-comparison.xml
===================================================================
--- scm-comparison.xml	(revision 44)
+++ scm-comparison.xml	(working copy)
@@ -28,6 +28,9 @@
             <impl id="co-op">
                 <name>Co-Op</name>
             </impl>
+            <impl id="darcs">
+                <name>Darcs</name>
+            </impl>
             <impl id="monotone">
                 <name>Monotone</name>
             </impl>
@@ -74,6 +77,7 @@
             <compare>
                 <s id="cvs">No. CVS commits are not atomic.</s>
                 <s id="arch">Yes. Commits are atomic.</s>
+                <s id="darcs">Yes. Commits are atomic.</s>
                 <s id="subversion">Commits are atomic.</s>
                 <s id="svk">Commits are atomic.</s>
                 <s id="aegis">Commits are atomic.</s>
@@ -102,6 +106,7 @@
                 <s id="subversion">Yes. Renames are supported.</s>
                 <s id="svk">Yes. Renames are supported.</s>
                 <s id="arch">Yes. Renames are supported.</s>
+                <s id="darcs">Yes. Renames are supported.</s>
                 <s id="bitkeeper">Yes. Renames are supported.</s>
                 <s id="aegis">Yes. Renames are supported.</s>
                 <s id="monotone">Yes. Renames are supported.</s>
@@ -146,6 +151,9 @@
                 <s id="arch">No. Copies of files and directory structures are
                     not supported. 
                 </s>
+                <s id="darcs">No. Copies of files and directory structures are
+                    not supported. 
+                </s>
                 <s id="bitkeeper">
                     Yes. Copies are supported.
                 </s>
@@ -182,6 +190,7 @@
                 </s>
                 <s id="svk">Yes.</s>
                 <s id="arch">Yes.</s>
+                <s id="darcs">Yes.</s>
                 <s id="bitkeeper">Yes.</s>
                 <s id="aegis">Yes.</s>
                 <s id="monotone">Yes.</s>
@@ -211,6 +220,7 @@
                 </s>
                 <s id="svk">Yes.</s>
                 <s id="arch">Yes.</s>
+                <s id="darcs">Yes.</s>
                 <s id="bitkeeper">Yes.</s>
                 <s id="aegis">Yes.</s>
                 <s id="monotone">Yes.</s>
@@ -245,6 +255,9 @@
                     different parts of a remote repository based on the 
                     permission systems of the underlying protocol.
                 </s>
+                <s id="darcs">
+                    No.
+                </s>
                 <s id="aegis">
                     Yes. Aegis relies on the UNIX permissions system to
                     implement permissions for files in the repository.
@@ -315,6 +328,9 @@
                 <s id="arch">
                     Yes. Changesets are supported.
                 </s>
+                <s id="darcs">
+                    Yes. Changesets are supported.
+                </s>
                 <s id="monotone">
                     Yes. Changesets are supported.
                 </s>
@@ -349,6 +365,7 @@
                 <s id="bitkeeper">Yes. (bk annotate)</s>
                 <s id="arch">Not in the command line client, but ViewARCH,
                 a web-interface for Arch, has it.</s>
+                <s id="darcs">Yes. (darcs annotate)</s>
                 <s id="monotone">No.</s>
                 <s id="aegis">Yes. aeannotate</s>
                 <s id="opencm">Unknown. Probably not.</s>
@@ -389,6 +406,11 @@
                     However, one must check out the entire repository as a
                     whole.
                 </s>
+                <s id="darcs">
+                    It is possible to commit only a certain directory. 
+                    However, one must check out the entire repository as a
+                    whole.
+                </s>
                 <s id="aegis">No. All changes are made repository-wide.</s>
                 <s id="monotone">No. All changes are tree-wide.</s>
                 <s id="opencm">No. All changes are made to a project as
@@ -428,6 +450,9 @@
                 <s id="arch">
                     Yes, using "tla changes".
                 </s>
+                <s id="darcs">
+                    Yes, using "darcs whatsnew".
+                </s>
                 <s id="aegis">Yes. Using aediff</s>
                 <s id="monotone">Yes. In a similar fashion to CVS.</s>
                 <s id="opencm">Yes. Using cm diff</s>
@@ -462,6 +487,9 @@
                 <s id="arch">
                     No.
                 </s>
+                <s id="darcs">
+                    No.
+                </s>
                 <s id="monotone">
                     Yes. It is possible to attach a comment to a certain
                     file at a certain revision.
@@ -524,6 +552,12 @@
                     client also supplies a reference page. However, some of 
                     the documentation is out of date or incomplete.
                 </s>
+                <s id="darcs">
+                    Good. The manual contains a brief tutorial and a solid
+                    reference.  Every sub-command can print its usage.
+                    Because the command-set is small and the model is
+                    simple, many users find it easy to get started.
+                </s>
                 <s id="bitkeeper">
                     Very good. There is a comprehensive help at the BitKeeper
                     site. Each command is documented in its own man page, 
@@ -579,6 +613,11 @@
                     is written in C, and is portable across UNIX systems
                     (and on Win32 only with a UNIX emulation layer).
                 </s>
+                <s id="darcs">
+                    Very good. Just a "darcs init" and you can start
+                    working. The only negative is that you need the Glasgow
+                    Haskell Compiler if you cannot find a binary.
+                </s>
                 <s id="bitkeeper">
                     Good. All that is required is downloading a binary
                     for the system and installing it using the installation
@@ -682,6 +721,12 @@
                     Aliasing of commands is possible so it it may be possible
                     to make it more compatible.
                 </s>
+                <s id="darcs">
+                    The command set is fairly compact and the core commands
+                    are easy to understand.  Follows CVS in a few places,
+                    but since the model is different most commands are
+                    unique.
+                </s>
                 <s id="monotone">
                     Tries to follow CVS conventions, but deviates where there
                     is a different design.
@@ -729,6 +774,10 @@
                     filesystem server. Currently supported protocols include
                     FTP, SFTP, WebDAV (remote file access over HTTP), 
                     as well as any remote filesystem protocol (NFS, SMB).
+                <Very /s>
+                <s id="darcs">
+                    Good. Darcs supports getting patches over HTTP, and
+                    getting and sending patches over SSH and email.
                 </s>
                 <s id="subversion">
                     Very good. The Subversion service can use either 
@@ -818,6 +867,10 @@
                     verify). A service can be hosted on any platform
                     that sports a suitable Internet service.
                 </s>
+                <s id="darcs">
+                    Very good. Supports many UNIXes and Windows, and is
+                    written in a portable language.
+                </s>
                 <s id="monotone">
                     Excellent. Executable is portable across all UNIXes and
                     Win32.
@@ -882,6 +935,10 @@
                     which are 
                     works in progress.
                 </s>
+                <s id="darcs">
+                    <a href="http://abridgegame.org/darcs/manual/node7.html">darcs_cgi</a>
+                    is included in the distribution.
+                </s>
                 <s id="aegis">Yes.</s>
                 <s id="monotone">No.</s>
                 <s id="opencm">No.</s>
@@ -928,6 +985,10 @@
                     <a href="http://www.hpl.hp.com/personal/Yasushi_Saito/octopy/">Octopy</a> 
                     and possibly others under development.
                 </s>
+                <s id="darcs">
+                    There is a very modest graphical interface to some
+                    commands.
+                </s>
                 <s id="aegis">
                     There is tkaegis.
                 </s>
@@ -971,6 +1032,7 @@
         <compare>
             <s id="cvs">GNU GPL (open source)</s>
             <s id="arch">GNU GPL (open source)</s>
+            <s id="darcs">GNU GPL (open source)</s>
             <s id="bitkeeper">
                 Proprietary, binary only license. Comes in
                 two versions: gratis and pay per use. The gratis license

Andrew

[1] http://better-scm.berlios.de/




More information about the darcs-users mailing list