Wiki Tools

  • Find Page
  • Recent Changes
  • Page History
  • Attachments


This is not intended to be any sort of Introduction To Bzr, or to be a comprehensive exposition. Rather, these articles aim at individual questions or usages, of the sort you might run into when you know enough for casual bzr use, but don't necessarily have a full mental model of how the pieces fit together. They're meant to fill out that model, and explain the superstructure.

These can be considered as filling a sort of FAQ role, in that they address things that seem to be common confusions. They're meant to be useful in being able to answer a question on IRC or the mailing list, by being able to point at an article here that fairly directly addresses exactly the question being asked.

The articles are mostly, though not entirely, standalone. They all assume some basic level of familiarity with bzr (at least of the level of the Bazaar in Five Minutes tutorial). And there's some amount of cross-referencing among them.

Components Of Bzr

The fundamental unit you manipulate in bzr is the Revision, and the 3 components that you use in various arrangements to deal with Revisions are the Repository, the Branch, and the Working Tree. An understanding of the differences between them is fundamental to a solid mental model of how bzr works.

It's difficult to fully define any of them without referencing the others. So I'm splitting it over two articles.

PiecesInBrief gives a brief thumbnail overview of the pieces, and some mentions of how they fit together. This doesn't attempt to give deep explanations, but gives an overall feel for their meanings.

PiecesInLength gives more details, particular about the Revision, and shows more precisely what the pieces do. It also talks a little about the terminology compared and applied to other version control systems.

They're Important

The two articles above are basic, and a cursory understanding of them is necessary to make much sense of what you're doing. So you should probably go through them first.


Revisions have unique identifiers (revids), but also have more human friendly numbers (revnos). The revids are constant, but the revnos can vary by branch.

RevNumbering covers this in more details and describes how the numbering is derived. It also talks about the mainline concept which is an important part of that, and describes a bit on the subject of why bzr does this.

Moving Stuff Around

bzr has commands like push and pull and merge for moving revisions between branches in various ways. But it can be confusing knowing which to use when.

RevHandling describes using those commands between two branches, and the effects both have on the created history. This article can be considered closely tied with RevNumbering, since this talks about how we created certain configurations, while RevNumbering talks about why the differences matter.


More vaguely planned, but not written.