“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.”

  • VersionControl
  • Every source tree a branch
  • A simple advanced tool
  • Keeping track of changes rather than versions
  • Record changes locally
  • Interactive records
  • Unrecord local changes
  • Interactive everything else
  • Test suites
  • Any old server
  • You decide write permissions
  • Symmetric repositories
  • CGI script
  • File and directory moves
  • Token replace
  • Configurable defaults

the FoAM repositories can be accessed using the interwiki tag 'FoamDarcs:' for example FoamDarcs:ceed

ie. http://fo.am/cgi-bin/darcsweb.cgi?r=ceed

instructions and tools for converting cvs repositries to darcs are available at http://www.scannedinavian.org/DarcsWiki/ConvertingFromCvs

using darcs and trac together > http://www.darcs.net/DarcsWiki/TracOnDarcs

based on entries in the manual with the caveat that “Because of the different models used by cvs (or arch) and darcs, it is difficult to provide a complete equivalence between cvs (or arch) and darcs. A rough correspondence for the everyday commands follows”

darcs cvs arch
darcs initialize   tla init-tree
darcs get cvs checkout tla get
darcs pull cvs update tla update
darcs pull --dry-run cvs -n update (summarize remote changes)  
darcs revert   tla file-diffs f "pipe" patch -R
darcs whatsnew cvs diff (if checking local changes) tla changes -diffs
darcs whatsnew --summary cvs -n update  
darcs whatsnew -ls "pipe" grep ^a cvs -n update "pipe" grep '?' (list potential files to add)  
darcs changes   tla logs
darcs diff cvs diff (if checking recorded changes)  
darcs diff -u   tla file-diffs
darcs add cvs add tla add
darcs mv - tla mv (not tla move)
darcs record cvs commit (if committing locally) tla commit (if committing locally)
darcs tag cvs commit tla commit (if marking a version for later use)
darcs push or darcs send cvs commit (if committing remotely) tla commit (if committing remotely)
darcs pull or darcs push   tla archive-mirror
darcs get cvs tag -b tla tag (if creating a branch)
darcs tag cvs tag tla tag (if creating a tag).