darcs is a version control system touted by it’s author as “a replacement for CVS”.
From the project’s page:
darcs is decentralized, based on a “theory of patches” with roots in quantum mechanics.
Groovy!
It includes a CGI interface that allows browsing of the repository via the Internet.
These notes where taken either through the documentation reading process or through its usage.
Each copy of the source is a fully functional branch or every copy of your source code is a full repository. This allows for developing off-line and totally experimental branches with full darcs functionality available and later, if so desired these changes are then merged in with the other repositories.
The contrast with CVS is very clear in that in CVS there is only one master repository and each local copy is check-out once and all check-ins and so on must be performed with on-line access to the repository.
The philosophy behind darcs is that of patches. Each patch has some meta-information associated with it and this enables some advanced manipulation of the repository and the patches. The basic premisses behind the patches formalism are the following:
scp or GPG-signed email messages) when pushing patches in.| cvs checkout | darcs get | |
| cvs update | darcs pull | |
| cvs -n update | darcs pull —dry-run | summarize remote changes |
| cvs -n update | darcs whatsnew —summary | summarize local changes |
| cvs -n update | grep ‘?’ | darcs whatsnew -ls | grep ^a | list potential files to add |
| rm; cvs update | darcs revert | |
| cvs diff | darcs whatsnew | checking local changes |
| cvs diff | darcs diff | checking recorded changes |
| cvs commit | darcs record | commiting locally |
| cvs commit | darcs tag | marking a version for later use |
| cvs commit | darcs push or darcs send | commiting remotely |
| cvs diff | mail | darcs send | |
| cvs add | darcs add | |
| cvs tag -b | darcs get | |
| cvs tag | darcs tag |