| CARVIEW |
darcs: a distributed, interactive, smart revision control system
Darcs is a free, open source revision control system. It is:
Distributed: Darcs was one of the first revision control systems in which 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, picking and choosing which patches are appropriate.
Smart: Darcs is different from most revision control systems in that it is based on the notion of change (or patch), rather than version. An underlying algebra of patches determines whether changes can be re-ordered. The laws of this algebra guarantee that the result of merging depends only on the final set of patches applied in a repository and not on their order.
Simple: As a consequence, Darcs offers a conceptually simpler view of the state of a repository: it is given by the set of patches it contains. Pulling and pushing patches merely transfers them from one set to another. So called "cherry-picking" is the default mode of operation, and it fully preserves the identity of patches.
[Skip to Readme]
Modules
[Index] [Quick Jump]
- Darcs
- Darcs.Patch
- Darcs.Patch.Annotate
- Darcs.Patch.Apply
- Darcs.Patch.ApplyMonad
- Darcs.Patch.ApplyPatches
- Darcs.Patch.Bracketed
- Darcs.Patch.Bundle
- Darcs.Patch.Choices
- Darcs.Patch.Commute
- Darcs.Patch.CommuteFn
- Darcs.Patch.CommuteNoConflicts
- Darcs.Patch.Conflict
- Darcs.Patch.Debug
- Darcs.Patch.Depends
- Darcs.Patch.Effect
- Darcs.Patch.FileHunk
- Darcs.Patch.Format
- Darcs.Patch.FromPrim
- Darcs.Patch.Ident
- Index
- Darcs.Patch.Info
- Darcs.Patch.Inspect
- Darcs.Patch.Invert
- Darcs.Patch.Invertible
- Darcs.Patch.Match
- Darcs.Patch.Merge
- Darcs.Patch.MonadProgress
- Darcs.Patch.Named
- Darcs.Patch.PatchInfoAnd
- Darcs.Patch.Permutations
- Darcs.Patch.Prim
- Darcs.Patch.Progress
- Darcs.Patch.Read
- Rebase
- Darcs.Patch.RegChars
- Darcs.Patch.Repair
- Darcs.Patch.RepoPatch
- Darcs.Patch.RepoType
- Darcs.Patch.Set
- Darcs.Patch.Show
- Darcs.Patch.Split
- Darcs.Patch.Summary
- Darcs.Patch.SummaryData
- Darcs.Patch.TokenReplace
- Darcs.Patch.TouchesFiles
- Darcs.Patch.Unwind
- Darcs.Patch.V1
- Darcs.Patch.V2
- Darcs.Patch.V3
- Darcs.Patch.Viewing
- Witnesses
- Darcs.Prelude
- Darcs.Repository
- Darcs.Repository.ApplyPatches
- Darcs.Repository.Cache
- Darcs.Repository.Clone
- Darcs.Repository.Create
- Darcs.Repository.Diff
- Darcs.Repository.Flags
- Darcs.Repository.Format
- Darcs.Repository.Hashed
- Darcs.Repository.HashedIO
- Darcs.Repository.Identify
- Darcs.Repository.InternalTypes
- Darcs.Repository.Inventory
- Darcs.Repository.Job
- Darcs.Repository.Match
- Darcs.Repository.Merge
- Darcs.Repository.Old
- Darcs.Repository.Packs
- Darcs.Repository.PatchIndex
- Darcs.Repository.Paths
- Darcs.Repository.Pending
- Darcs.Repository.Prefs
- Darcs.Repository.Pristine
- Darcs.Repository.Rebase
- Darcs.Repository.Repair
- Darcs.Repository.Resolution
- Darcs.Repository.State
- Darcs.Repository.Test
- Darcs.Repository.Traverse
- Darcs.Repository.Working
- Test
- UI
- Darcs.UI.ApplyPatches
- Darcs.UI.Commands
- Darcs.UI.Commands.Add
- Darcs.UI.Commands.Amend
- Darcs.UI.Commands.Annotate
- Darcs.UI.Commands.Apply
- Darcs.UI.Commands.Clone
- Darcs.UI.Commands.Convert
- Darcs.UI.Commands.Diff
- Darcs.UI.Commands.Dist
- Darcs.UI.Commands.GZCRCs
- Darcs.UI.Commands.Help
- Darcs.UI.Commands.Init
- Darcs.UI.Commands.Log
- Darcs.UI.Commands.MarkConflicts
- Darcs.UI.Commands.Move
- Darcs.UI.Commands.Optimize
- Darcs.UI.Commands.Pull
- Darcs.UI.Commands.Push
- Darcs.UI.Commands.Rebase
- Darcs.UI.Commands.Record
- Darcs.UI.Commands.Remove
- Darcs.UI.Commands.Repair
- Darcs.UI.Commands.Replace
- Darcs.UI.Commands.Revert
- Darcs.UI.Commands.Rollback
- Darcs.UI.Commands.Send
- Darcs.UI.Commands.SetPref
- Darcs.UI.Commands.Show
- Darcs.UI.Commands.ShowAuthors
- Darcs.UI.Commands.ShowContents
- Darcs.UI.Commands.ShowDependencies
- Darcs.UI.Commands.ShowFiles
- Darcs.UI.Commands.ShowIndex
- Darcs.UI.Commands.ShowPatchIndex
- Darcs.UI.Commands.ShowRepo
- Darcs.UI.Commands.ShowTags
- Darcs.UI.Commands.Tag
- Darcs.UI.Commands.Test
- Darcs.UI.Commands.TransferMode
- Darcs.UI.Commands.Unrecord
- Darcs.UI.Commands.Unrevert
- Darcs.UI.Commands.Util
- Darcs.UI.Commands.WhatsNew
- Darcs.UI.Completion
- Darcs.UI.Defaults
- Darcs.UI.Email
- Darcs.UI.External
- Darcs.UI.Flags
- Darcs.UI.Options
- Darcs.UI.PatchHeader
- Darcs.UI.PrintPatch
- Darcs.UI.RunCommand
- Darcs.UI.SelectChanges
- Darcs.UI.TheCommands
- Darcs.UI.Usage
- Util
- Darcs.Util.AtExit
- Darcs.Util.ByteString
- Darcs.Util.CommandLine
- Darcs.Util.Compat
- Darcs.Util.DateMatcher
- Darcs.Util.DateTime
- Darcs.Util.Diff
- Darcs.Util.Download
- Darcs.Util.Encoding
- Darcs.Util.English
- Darcs.Util.Exception
- Darcs.Util.Exec
- Darcs.Util.External
- Darcs.Util.File
- Darcs.Util.Global
- Darcs.Util.Graph
- Darcs.Util.HTTP
- Darcs.Util.Hash
- Darcs.Util.Index
- Darcs.Util.IsoDate
- Darcs.Util.Lock
- Darcs.Util.Parser
- Darcs.Util.Path
- Darcs.Util.Printer
- Darcs.Util.Progress
- Darcs.Util.Prompt
- Darcs.Util.Ratified
- Darcs.Util.Show
- Darcs.Util.SignalHandler
- Darcs.Util.Ssh
- Darcs.Util.Tree
- Darcs.Util.URL
- Darcs.Util.Workaround
- Darcs.Patch
Flags
Manual Flags
| Name | Description | Default |
|---|---|---|
| static | Build static binary | Disabled |
| threaded | Use threading and SMP support. | Enabled |
| executable | Build darcs executable | Enabled |
| rts | Disabled | |
| warn-as-error | Build with warnings-as-errors | Disabled |
Automatic Flags
| Name | Description | Default |
|---|---|---|
| curl | Use libcurl for HTTP support. | Disabled |
| pkgconfig | Use pkgconfig to configure libcurl | Disabled |
| terminfo | Use the terminfo package for enhanced console support. | Enabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- darcs-2.16.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
| 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, 2.18.2, 2.18.3, 2.18.4, 2.18.5 |
|---|---|
| Change log | CHANGELOG |
| Dependencies | array (>=0.5.1.0 && <0.6), async (>=2.0.2 && <2.3), attoparsec (>=0.13.0.1 && <0.14), base (>=4.10 && <4.15), base16-bytestring (>=0.1 && <0.2), binary (>=0.5 && <0.11), bytestring (>=0.10.6 && <0.11), conduit (>=1.3.0 && <1.3.3), constraints (>=0.11 && <0.13), containers (>=0.5.6.2 && <0.7), cryptonite (>=0.24 && <0.28), darcs, data-ordlist (>=0.4 && <0.5), directory (>=1.2.7 && <1.4), fgl (>=5.5.2.3 && <5.8), filepath (>=1.4.1 && <1.5.0.0), hashable (>=1.2.3.3 && <1.4), haskeline (>=0.7.2 && <0.9), html (>=1.0.1.2 && <1.1), http-conduit (>=2.3 && <2.4), http-types (>=0.12.1 && <0.12.4), memory (>=0.14 && <0.16), mmap (>=0.5.9 && <0.6), mtl (>=2.2.1 && <2.3), network (>=2.6 && <3.2), network-uri (>=2.6 && <2.8), old-time (>=1.1.0.3 && <1.2), parsec (>=3.1.9 && <3.2), process (>=1.2.3.0 && <1.7), regex-applicative (>=0.2 && <0.4), regex-compat-tdfa (>=0.95.1 && <0.96), sandi (>=0.4 && <0.6), stm (>=2.1 && <2.6), tar (>=0.5 && <0.6), temporary (>=1.2.1 && <1.4), terminfo (>=0.4.0.2 && <0.5), text (>=1.2.1.3 && <1.3), time (>=1.5.0.1 && <1.10), transformers (>=0.4.2.0 && <0.6), unix (>=2.7.1.0 && <2.8), unix-compat (>=0.5 && <0.6), utf8-string (>=1 && <1.1), vector (>=0.11 && <0.13), Win32 (>=2.4.0 && <2.7), zip-archive (>=0.3 && <0.5), zlib (>=0.6.1.2 && <0.7.0.0) [details] |
| License | GPL-2.0-or-later |
| Author | David Roundy <droundy@darcs.net>, <darcs-devel@darcs.net> |
| Maintainer | <darcs-devel@darcs.net> |
| Uploaded | by bfrk at 2020-08-14T11:29:31Z |
| Category | Development |
| Home page | https://darcs.net/ |
| Source repo | head: darcs get https://darcs.net/ |
| Distributions | Arch:2.18.5, Debian:2.14.5, Fedora:2.18.5, FreeBSD:2.10.1, NixOS:2.18.5 |
| Reverse Dependencies | 2 direct, 0 indirect [details] |
| Executables | darcs |
| Downloads | 55806 total (348 in the last 30 days) |
| Rating | 2.5 (votes: 3) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs uploaded by user Build status unknown [no reports yet] |
Readme for darcs-2.16.1
[back to package description]Darcs
Darcs is a distributed version control system written in Haskell.
Getting started
Compiling
The easiest way to build darcs is by using cabal-install version 3.2 or later. A plain
> cabal build
or
> cabal install
should work out of the box with any ghc version from 8.0 up to 8.10.
Run the test suite
It is currently not possible to run the full test suite from the source distribution that you get from hackage. Instead you need to be in a clone of the darcs source code repository. This is because the tests depend on an old version of shelly that was patched to work with newer ghc versions and bundled with Darcs. It is not part of the source distribution to avoid 'cabal install' also trying to install our patched version of shelly.
> cabal build --enable-tests
> cabal test --test-show-details=direct
Using
To clone a repository via HTTP and send patches by mail:
> darcs clone --lazy https://darcs.net
> # edit files...
> darcs add my_new_file
> darcs record -m "my changes"
> darcs send
To clone via SSH and push patches:
> darcs clone user@hub.darcs.net:user/repo
> # edit files...
> darcs add my_new_file
> darcs record -m "my changes"
> darcs push
To create a project and start working:
> darcs init my_project
> cd my_project
> # create and edit files...
> darcs add my_new_file
> darcs record -m "initial version"
Pull new patches from upstream:
> darcs pull
Concise and up-to-date documentation is available from darcs itself:
> darcs help # list all commands
> darcs help command # help for specific command
> darcs command --help # dito
Reporting bugs
Please send bug reports to bugs@darcs.net. This will automatically add your report to the bug tracker. If you are unsure or just have a question or a comment, you can subscribe to darcs-users@darcs.net and post your question or comments there. See https://darcs.net/MailingLists for details.
Hacking
Please consult https://darcs.net/Development/GettingStarted for information about how to contribute to Darcs. Or send an email to darcs-devel@darcs.net or to darcs-users@darcs.net.
The wiki can be downloaded with the command:
> darcs clone --lazy https://darcs.net/darcs-wiki