This attempts to describe the project's architecture in terms of modules. In general, no layer should know the details of any layer above it, and no layer should abuse the interface of layers below it. See Design for an overview of how things work.

Interface layer

This is the topmost layer and is the part most directly exposed to the user.

Repository layer

This layer contains all the objects that implement the core primitives of the SCM:

It also contains the proxy objects for remote repositories:

Finally, it contains the objects from which the repository is constructed:

Storage layer

This contains the basis for version storage, revlog, which provides these facilities:

UI layer

This provides generic methods for communicating with the user and managing configuration info.

Currently this is provided by which implements text-based methods, but future GUI systems should superclass this.

Utility layer

This includes generic functionality and platform abstraction


WhatGoesWhere (last edited 2009-05-19 19:31:05 by localhost)