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.Commands - Darcs.Repository - what goes on in \_darcs , for example prefs - Darcs.Patch - properties of patches, how they commute, etc Major subsystems/concepts ------------------------- - `"Lazy" partial repositories `_ - `RepoFormat `_ - `(Colour)Printers `_ - `ConflictMarking `_ - Selecting patches - `PatchSelectionMechanism `_ - `Calculating patch dependencies `_ - see especially Tommy's ball-on-wire explanation that follows - `Pending patch and sifting `_ - `NamedPatch `_ - how do patches look like inside? how do those hashes get computed? - `HashedPristine `_ - Type witnesses - sealing patches: - `Seal and FlippedSeal `_ - "when you seal a patch, you agree to lose information about it" - `Phantom Types, Existentials and Controlling Unification `_ - `the point of IsEq `_ - see thread parent for the context, and an example of why you'd want something like `IsEq `_ Bits and pieces of code ----------------------- - `http://darcs.net/unstable/api-doc `_ - `headPermutationsFL `_ - `Clever commute `_ (near bottom) See also -------- - `Glossary `_ - `DeveloperFAQ `_ - `PatchTheory `_ - `CategoryDevelopers `_