I’m finding the terminology used by Bazaar to be both familiar, and confusing. In particular, there are three terms that, for the most part, have identical meanings to how the terms are used in the centralized RCS solutions I’m used to, but for which there’s a slight difference that requires different thinking about them. These three terms are repository, branch and working tree.
A repository is the the storage area that contains all the history information. The difference here is one that shouldn’t be shocking: there is no central repository in a DRCS solution. However, this fact does require some different thinking. A given repository may not, for instance, contain a complete history of the "project" under revision control. Why not? Because, just as an example, a repository on one machine may not have history that’s in a repository on another machine that was created with a branch. This may be obvious, but the nuances of this can be subtle and surprising at first. Entirely new ways of managing a project are possible, each with their own sets of pros and cons.
A branch is a copy of a project at a point in time, where changes and commits can happen in parelel. The difference here is that in a centralized RCS solution, there’s a "main branch" or "trunk" and all branches exist within the central repository. In a DRCS solution, there is no "main branch", except possibly by convention. In an RCS it’s normal to do most development in the main branch. In fact, there’s often a desire to not branch, since branches have a reputation of being difficult to manage and to merge. In a DRCS, however, it’s not possible for multiple developers to work within a project with out branching. Every developer will have at least one branch to themselves. Because branches don’t exist within a central repository, the relationship between branches is purely logical, and you may not know what branches even exist. Branching and merging are just part of daily life, and in general are not complex operations. Another point to keep in mind, at least with Bazaar, is that branches by default will have their own repository, but it’s possible (and recommended) for local branches to share a repository (see the init-repo command).
A working tree is the copy of files from a specific point in time that modifications can be made to and committed. The difference here is that the files exist within the same directory as the branch, if they exist at all. It’s possible to have a "treeless" branch, and in fact that’s a good strategy for a shared central branch.
Keeping in mind the subtle differences in these terms is definitely helpful when learning to use a DRCS solution.