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 DarcsLibraries)
- Darcs - general darcs-y stuff
- 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)
High level documentation
Overview of commands:
Big picture notes:
Repository internals:
- RepoFormat
- Hashes
- HashedPristine
- NamedPatch - how do patches look like inside? how do those hashes get computed?
- The infamous pending patch stub
- (See also the optimisations below)
Working with the outside world:
Internal subsystems/concepts
Key patch theory concepts
- Patch theory
- Conflictors - darcs 2 conflict representation
More internal concepts
- (Colour)Printers
- ConflictMarking
Selecting patches
- Patch selection
- Calculating patch dependencies
- see especially Tommy’s ball-on-wire explanation that follows
- Pending patch and sifting
Optimisations
Quality assurance
Historical concepts
For darcs archaeologists
Bits and pieces of code
- http://darcs.net/api-doc
- headPermutationsFL
- Clever commute (near bottom)
