Bazaar (vcs)

From Wikipedia, the free encyclopedia

Bazaar
Developer: Canonical Ltd.
Latest release: 0.13 / 5 December 2006
OS: Cross-platform
Use: Decentralized revision control system
License: GNU General Public License
Website: http://www.bazaar-vcs.org/

Bazaar is a decentralized revision control system (RCS) sponsored by Canonical Ltd. It allows team members to branch and merge upstream code very easily. Team members can also be productive with Bazaar in a minimum of commands.

Bazaar is a from-scratch implementation of a revision control system in Python. The lead designer, Martin Pool, describes it as a composite of ideas drawn from many different revision control systems.[1] It is a distributed system in that there is no inbuilt need for a project to have one central repository which stores all the branches and committed versions.

Contents

[edit] History

On February 1, 2005, Martin Pool, a developer who had previously described and reviewed a number of revision control systems in talks and in his weblog, announced that he was working at Canonical Ltd. and tasked with "build[ing] a distributed version-control system that open-source hackers will love to use."[2] A public website and mailing list were established in March of 2005.

This project started as a rewrite of Canonical Ltd's Baz software in Python. Canonical Ltd. wanted to improve the usability of Baz and decided that rewriting the application from scratch would be the best way to approach this. To try to reduce confusion and conflicts the new project was originally called Bazaar-NG and its command was called "bzr", changed from the original Bazaar's "baz". It is now just known as Bazaar. Bazaar was initially designed to be a development version and would be eventually released as Bazaar 2.x and replace the Baz program.[3] This plan is currently not being pursued as the Bazaar program has matured enough to remain an independent application. There were also plans to port the core Bazaar functionality to compiled C code, but due to the advances in Python, this is not currently being pursued. Most of the speed issues related to Bazaar are not related to the slower interpreted code but to unoptimized I/O methods and external effects.[4][5]

[edit] Bazaar vs Baz

Common Features:

  • Files are identified by file-id
  • Revisions have globally unique identifiers
  • Both support a repository-and-checkout workflow
  • Both use diff3-style merges
  • Dumb file transports (http, sftp, ftp, filesystem)
  • Neither support tags (like SVN, a separate branch can be used for the same purpose)
  • Both support GPG signing

Different Features

  • Uncommit is illegal (and dangerous) in baz
  • Baz is written in C
  • Baz has poor error messages (an improvement over Arch, though)
  • Baz doesn't support the self-contained branches that bzr makes on init.
  • Baz requires caches (revision libraries, tree logs and Arch Cache) for efficient operation (and is slow even so).
  • Baz branches are referred to by globally-unique identifiers, not locations
  • Baz branches typically do not have the complete revision-history. Instead, they say "look at this other branch for old data".

[edit] Features

  • Decentralized: Bazaar is decentralized and allows for greater flexibility for the programmer.
  • Simple: Bazaar allows users to modify the current branch by using normal file-system commands. Users can be productive in Bazaar with very few commands.
  • Smart: Bazaar has a very intelligent merge system and reduces conflicts between branches.
  • Unicode support: Bazaar supports versioning files with names from the complete Unicode set. It also allows commit messages, commiter names, etc to be in Unicode.

[edit] Foreign Branch Support

Bazaar has (currently limited) support for working with other revision control systems [6]. This allows users to branch from another system (such as Subversion), make local changes and commit them into a Bazaar branch, and then later merge them back into the other system. Bazaar has basic support for Subversion with the bzr-svn[7] plugin. There is also beginnings of support for both Mercurial [8] and Git [9]. Currently these are not feature complete, but are complete enough to show a graphical history.

[edit] Notes

  1.   http://sourcefrog.net/weblog/personal/at-canonical.html
  2.   http://lists.gnu.org/archive/html/gnu-arch-users/2005-08/msg00170.html
  3.   http://sourcefrog.net/weblog/software/vc/bzr/composites.html

[edit] See also

[edit] External links

In other languages