Internals
Attempting to compile a field guide to the darcs source code. Please explain stuff and fill this page in.
Code hierarchy
Did you know we have API documentation too? See http://darcs.net/api-doc or combined with hoogle http://joyful.com/repos/darcs-unstable/api-doc
- src - generic code, could likely be spun off (see Projects)
- Darcs.UI - the outer shell of darcs, its user interface
- Darcs.Repository - what goes on in _darcs , for example prefs
- Darcs.Patch - properties of patches, how they commute, etc (see Patches)
- Darcs.Util - general darcs-y stuff
High level documentation
Overview of commands:
Big picture notes:
Repository internals:
- Repository: inside of
_darcs
- RepoFormat
- Hashes
- HashedPristine
- NamedPatch - how do patches look like inside? how do those hashes get computed?
- Dates - how does Darcs handle dates?
- The infamous pending patch stub
- (See also the optimisations below)
Internal subsystems/concepts
Key patch theory concepts
- Patch theory
- Commuting
- Conflictors - darcs 2 conflict representation
- PrimsV3
More internal concepts
Selecting patches
- Patch selection
- Calculating patch dependencies
- see especially Tommy’s ball-on-wire explanation that follows
- Pending patch and sifting