darcs: a distributed, interactive, smart revision control system

[ development, gpl, library ] [ Propose Tags ]

Darcs is a free, open source revision control system. It is:

  • Distributed: Every user has access to the full command set, removing boundaries between server and client or committer and non-committers.

  • Interactive: Darcs is easy to learn and efficient to use because it asks you questions in response to simple commands, giving you choices in your work flow. You can choose to record one change in a file, while ignoring another. As you update from upstream, you can review each patch name, even the full "diff" for interesting patches.

  • Smart: Originally developed by physicist David Roundy, darcs is based on a unique algebra of patches.

This smartness lets you respond to changing demands in ways that would otherwise not be possible. Learn more about spontaneous branches with darcs.


[Skip to Readme]

Modules

[Last Documentation]

  • ByteStringUtils
  • CommandLine
  • Crypt
    • Crypt.SHA256
  • Darcs
    • Darcs.ArgumentDefaults
    • Darcs.Arguments
    • Darcs.Bug
    • Darcs.CheckFileSystem
    • Darcs.ColorPrinter
    • Darcs.Commands
      • Darcs.Commands.Add
      • Darcs.Commands.AmendRecord
      • Darcs.Commands.Annotate
      • Darcs.Commands.Apply
      • Darcs.Commands.Changes
      • Darcs.Commands.Check
      • Darcs.Commands.Convert
      • Darcs.Commands.Diff
      • Darcs.Commands.Dist
      • Darcs.Commands.GZCRCs
      • Darcs.Commands.Get
      • Darcs.Commands.Help
      • Darcs.Commands.Init
      • Darcs.Commands.MarkConflicts
      • Darcs.Commands.Move
      • Darcs.Commands.Optimize
      • Darcs.Commands.Pull
      • Darcs.Commands.Push
      • Darcs.Commands.Put
      • Darcs.Commands.Record
      • Darcs.Commands.Remove
      • Darcs.Commands.Repair
      • Darcs.Commands.Replace
      • Darcs.Commands.Revert
      • Darcs.Commands.Rollback
      • Darcs.Commands.Send
      • Darcs.Commands.SetPref
      • Darcs.Commands.Show
      • Darcs.Commands.ShowAuthors
      • Darcs.Commands.ShowBug
      • Darcs.Commands.ShowContents
      • Darcs.Commands.ShowFiles
      • Darcs.Commands.ShowIndex
      • Darcs.Commands.ShowRepo
      • Darcs.Commands.ShowTags
      • Darcs.Commands.Tag
      • Darcs.Commands.TrackDown
      • Darcs.Commands.TransferMode
      • Darcs.Commands.Unrecord
      • Darcs.Commands.Unrevert
      • Darcs.Commands.WhatsNew
    • Darcs.CommandsAux
    • Darcs.Compat
    • Darcs.Diff
    • Darcs.Email
    • Darcs.External
    • Darcs.FilePathMonad
    • Darcs.Flags
    • Darcs.Global
    • Darcs.Gorsvet
    • Darcs.Hopefully
    • Darcs.IO
    • Darcs.Lock
    • Darcs.Match
    • Darcs.Ordered
    • Darcs.Patch
      • Darcs.Patch.Apply
      • Darcs.Patch.Bundle
      • Darcs.Patch.Check
      • Darcs.Patch.Choices
      • Darcs.Patch.Commute
      • Darcs.Patch.Core
      • Darcs.Patch.Depends
      • Darcs.Patch.FileName
      • Darcs.Patch.Info
      • Darcs.Patch.Match
      • Darcs.Patch.MatchData
      • Darcs.Patch.Non
      • Darcs.Patch.Patchy
      • Darcs.Patch.Permutations
      • Darcs.Patch.Prim
      • Darcs.Patch.Properties
      • Darcs.Patch.Read
      • Darcs.Patch.ReadMonads
      • Darcs.Patch.Real
      • Darcs.Patch.Set
      • Darcs.Patch.Show
      • Darcs.Patch.TouchesFiles
      • Darcs.Patch.Viewing
    • Darcs.Population
    • Darcs.PopulationData
    • Darcs.PrintPatch
    • Darcs.ProgressPatches
    • Darcs.RemoteApply
    • Darcs.RepoPath
    • Darcs.Repository
      • Darcs.Repository.ApplyPatches
      • Darcs.Repository.Cache
      • Darcs.Repository.Checkpoint
      • Darcs.Repository.DarcsRepo
      • Darcs.Repository.Format
      • Darcs.Repository.HashedIO
      • Darcs.Repository.HashedRepo
      • Darcs.Repository.Internal
      • Darcs.Repository.InternalTypes
      • Darcs.Repository.Motd
      • Darcs.Repository.Prefs
      • Darcs.Repository.Pristine
      • Darcs.Repository.Repair
    • Darcs.Resolution
    • Darcs.RunCommand
    • Darcs.Sealed
    • Darcs.SelectChanges
    • Darcs.Show
    • Darcs.SignalHandler
    • Darcs.SlurpDirectory
      • Darcs.SlurpDirectory.Internal
    • Darcs.Test
    • Darcs.TheCommands
    • Darcs.URL
    • Darcs.Utils
  • DateMatcher
  • English
  • Exec
  • HTTP
  • IsoDate
  • Lcs
  • OldDate
  • Printer
  • Progress
  • RegChars
  • SHA1
  • Ssh
  • URL
  • UTF8
  • Workaround

Flags

Automatic Flags
NameDescriptionDefault
curl

Use libcurl for HTTP support.

Enabled
curl-pipelining

Use libcurl's HTTP pipelining.

Disabled
http

Use the pure Haskell HTTP package for HTTP support.

Enabled
bytestring

Use the external bytestring package.

Enabled
zlib

Use the external zlib binding package.

Enabled
utf8-string

Use the external utf8-string binding package.

Enabled
terminfo

Use the terminfo package for enhanced console support.

Enabled
type-witnesses

Use GADT type witnesses.

Disabled
color

Use ansi color escapes.

Enabled
mmap

Compile with mmap support.

Enabled
test

Compile unit tests (requires QuickCheck >= 2.1.0.0).

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Versions [RSS] 2.1.2.1, 2.1.2.2, 2.1.98.2, 2.1.99.0, 2.2.0, 2.2.1, 2.3.0, 2.3.1, 2.4, 2.4.1, 2.4.3, 2.4.4, 2.5, 2.5.1, 2.5.2, 2.8.0, 2.8.1, 2.8.2, 2.8.3, 2.8.4, 2.8.5, 2.10.0, 2.10.1, 2.10.2, 2.10.3, 2.12.0, 2.12.1, 2.12.2, 2.12.3, 2.12.4, 2.12.5, 2.14.0, 2.14.1, 2.14.2, 2.14.3, 2.14.4, 2.14.5, 2.16.1, 2.16.2, 2.16.3, 2.16.4, 2.16.5, 2.18.1
Change log NEWS
Dependencies array (>=0.1 && <0.3), base (>=3 && <4), bytestring (>=0.9.0 && <0.10), containers (>=0.1 && <0.3), directory (>=1.0 && <1.1), filepath (>=1.1 && <1.2), hashed-storage (>=0.3.6 && <0.4), haskeline (>=0.6.1 && <0.7), html (>=1.0 && <1.1), HTTP (>=3000.0 && <4000.1), HUnit (>=1.0), mmap (>=0.2), mtl (>=1.0 && <1.2), network (>=2.2 && <2.3), old-time (>=1.0 && <1.1), parsec (>=2.0 && <3.1), process (>=1.0 && <1.1), QuickCheck (>=2.1.0.0), random (>=1.0 && <1.1), regex-compat (>=0.71 && <0.94), terminfo (>=0.3 && <0.4), test-framework (>=0.2.2), test-framework-hunit (>=0.2.2), test-framework-quickcheck2 (>=0.2.2), unix (>=1.0 && <2.4), utf8-string (>=0.3 && <0.4), zlib (>=0.5.1.0 && <0.6.0.0) [details]
License LicenseRef-GPL
Author David Roundy <droundy@darcs.net>, <darcs-users@darcs.net>
Maintainer <darcs-users@darcs.net>
Category Development
Home page http://darcs.net/
Source repo head: darcs get http://darcs.net/
Uploaded by PetrRockai at 2009-07-23T13:27:36Z
Distributions Arch:2.16.5, Debian:2.14.5, Fedora:2.16.5, FreeBSD:2.10.1
Reverse Dependencies 2 direct, 0 indirect [details]
Executables unit, darcs, witnesses
Downloads 50622 total (235 in the last 30 days)
Rating 2.5 (votes: 3) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2016-12-31 [all 6 reports]

Readme for darcs-2.3.0

[back to package description]
Darcs
=====
This is the source tree for darcs, a distributed version control system
written in Haskell.

For more information, visit the darcs web site:

   http://www.darcs.net


Compilation and Installation
============================

Darcs currently supports two build systems: a cabal-based system and a legacy
autotools-based system, and a cabal-based system. CABAL IS RECOMMENDED and the
autotools system is deprecated: in future releases, autotools support will be
removed.

If a "configure" file is present, autotools is supported.  If a
"Setup.lhs" file is present, cabal is supported.  Currently there is a
separate source tarball for each build system; either can be used in
unstable checkouts.

Using GHC 6.10.3 or newer is STRONGLY RECOMMENDED. You can compile darcs with
GHC 6.8, but there are several caveats. If you are using 6.8.2 or older, please
disable mmap support (pass -f-mmap to cabal install or runghc Setup configure
below). Note that the GHC 6.8.2 that ships with Debian Lenny is not affected
and it should be safe to keep mmap enabled. It is also recommended to disable
use of Hackage zlib when compiling with GHC 6.8.2 (including the Debian Lenny
version): pass -f-zlib to cabal. When using zlib, we have seen occasional
crashes with error messages like "openBinaryFile: file locked" -- this is a
known GHC 6.8.2 bug (and is fixed in GHC 6.8.3). Last, if you are using a
64-bit system, darcs may hang when you exit a pager when compiled with GHC
older than 6.10.3. Although this is harmless, it is quite inconvenient.

Using Cabal
-----------

This method requires the cabal package, version 1.6 or higher.  The
cabal-install package is also recommended.

If you have the "cabal-install" package on your system (that is, there is a
"cabal" executable in your path), you can use the following command to create
an executable in ~/.cabal/bin/darcs (this will also automatically fetch and
build dependencies from the Hackage server).

    $ cabal install

Otherwise, if you have the "cabal" package but not the "cabal-install"
package, run the following:

    $ runghc Setup configure
    $ runghc Setup build
    $ sudo runghc Setup install

You may also omit the last step and copy the darcs executable (found in
dist/build/darcs/darcs) to a location of your choosing.

More detailed instructions can be found at
<http://www.haskell.org/haskellwiki/Cabal/How_to_install_a_Cabal_package>
including instructions on obtaining a copy of cabal-install.

Please also note that the cabal-based build by default requires the cURL
library (and development headers). If, for some reason, you cannot provide
cURL, please pass "-f-curl" to the configure step above.

Using Autotools
---------------

If you have the normal, autotools-based tarball, this sequence should work
for you (if you are in doubt, this is likely the case):

    $ ./configure
    $ make
    # make install

You first need to run `autoconf` if you obtained the source tree from the
darcs repository (but this is not needed for release tarballs).

For more information, please see the manual:

 * http://www.darcs.net/manual
 * doc/manual/darcs.ps


Hacking
=======
For more information about darcs hacking and best practices please check
the darcs wiki at http://wiki.darcs.net/DarcsWiki

Of particular interest are the following documents:
  * http://wiki.darcs.net/index.html/DeveloperFAQ
  * http://wiki.darcs.net/index.html/DeveloperTips

Testing
=======
For more information about the test suite, including how to run specific
tests please read tests/README.test_maintainers.txt.

Happy hacking!