Wiki Tools

  • Find Page
  • Recent Changes
  • Page History
  • Attachments

Introducing Bazaar

Bazaar is a decentralized revision control system. Revision control involves keeping track of changes in software source code or similar information, and helping people work on it in teams. Bazaar is a free software project with a large community of contributors, sponsored by Canonical Limited, the founders of Ubuntu and Launchpad. Bazaar is genuinely Free Software, released under the GNU GPL. It is written in Python and designed for correctness, performance, simplicity, and familiarity for developers migrating from CVS or Subversion.

bzr has been self-hosting since March 2005 and is mature enough to host large projects such as Bazaar has a full set of plugins and a growing suite of 3rd Party Utilities is under active development. Since then many projects have adopted Bazaar.

Correctness and Speed

The primary focus of the development team is to produce a revision control tool that the free software community will LOVE to use. We believe that distributed revision control needs to be done very well in order to expand the set of people who contribute to free software projects. For that reason, Bazaar is specifically engineered to be as tolerant of user decisions as possible, and to allow ANY operation on your code tree that is possible using UNIX and Windows filesystems. As a primary example, Bazaar is extremely tolerant of renames of directories and files, even when multiple different contributors are renaming files and directories differently in their branches, and then merging from one another. Code merges work transparently across renames of files and directories, an extremely important capability.

We believe that the revision control system should not impose arbitrary restrictions on your project. In other words, your community should be able to treat your tree as entirely malleable, reshaping it to improve clarity and structure of the code layout as much as the contents of the files that make up the tree.

Organising Community Contributions

In addition, we believe that organising the contributions of diverse members of a community is an important part of the revision control problem. In an open source project, many of your contributors will be transient "drive-by" coders who just want to fix a specific issue or add a specific feature, not get deeply engaged in the project. Bazaar makes it very easy for them to get the code, make changes, publish those changes, and have them integrated in your mainline, all without having to setup a code hosting server.

It is trivial to publish your branches with Bazaar, you can export them over the web using an HTTP or FTP server, or you can provide access using standard remote filesystem protocols like SFTP. If you want to optimise network performance, then you can easily setup a SmartServer, which essentially allows Bazaar to talk an efficient protocol to your server, transferring only the data needed for each operation. Integration

If you want, you can use Launchpad as a free code hosting service for any personal or project code branches. It is easy to manage your project's code in Launchpad, and to keep track of the contributions being posted by members of your community. You can also take advantage of easy integration between the revision control system and the bug tracking features of Launchpad.

Many Ways to Work

Moving to a distributed revision control system might seem to be a daunting, fundamental change. Bazaar is unique in that it allows you to setup centralised branches to which your team members can continue to commit exactly as they currently do with CVS or Subversion. In other words, its possible to migrate to distributed revision control using Bazaar without radically changing your project structure until you are ready to go fully distributed.

It is also of course possible to work in a mixed centralised/distributed fashion, with a core "mainline" to which many project members commit, alongside branches managed by teams and individuals, merging easily between them. All of this makes it very easy to introduce distributed workflows into your project if you are currently using a centralised revision control system.