Bazaar (or "bzr") is the Version Control system in use by several workgroups at the Linux Foundation.
Bazaar was previously known as Bazaar-NG (to distinguish it from the older Bazaar project (or "baz"); most of the pages on this wiki still call it Bazaar-NG.
Bazaar is available in nearly all recent distributions. Access to the LF's repositories requires bzr 2.0 or higher.
Prebuilt binaries are available for a number of platforms via the Bazaar download page.
Installing from Source
The current version of bzr can be downloaded from the Bazaar download page. It requires Python 2.4 and the ElementTree and cElementTree modules at minimum; the latter two modules are a part of Python 2.5 or later. To use the "sftp" method of talking to external repositories, the paramiko and pycrypto modules are required.
Bazaar's source tree is set up so it can be used easily without installing if necessary. Just run the "bzr" executable at the root of the source tree.
Plugins are add-on code modules which extend bzr, enhancing current features and adding new ones.
Distributions which package bzr itself often package plugins as well; search for a "bzrtools" package to see. For unpackaged plugins, the bzr site has good installation instructions.
One plugin that looks useful for projects (such as LSB) which have multiple repositories is the "update-mirrors" plugin. With this plugin, a single command "bzr update-mirrors" in a directory that holds branches of multiple repositories can do the effect of a "bzr pull" on each.
(modified from [here]):
One function of a version control system is to keep track of who changed what. In a decentralized system, that requires an identifier for each author that is globally unique. Most people already have one of these: an email address. Bzr will auto-generate an email address by looking up your username and hostname, but this is only right if you always run bzr from the same machine and don't use a different email address as your identifier (such as @linux-foundation.org). We need a user's commits to have the same identifier over time! Here are some options:
Set an email address via bzr whoami. This is the simplest way.
To set a global identity, use:
% bzr whoami "Your Name <firstname.lastname@example.org>"
If you’d like to use a different address for a specific branch, enter the branch folder and use:
% bzr whoami --branch "Your Name <email@example.com>"
- Set the email address in the ~/.bazaar/bazaar.conf by adding the following lines. Please note that [DEFAULT] is case sensitive:
[DEFAULT] email = Your Name <firstname.lastname@example.org>
Override the previous setting on a branch by branch basis by creating a branch section in ~/.bazaar/branches.conf by adding the following lines:
[/the/directory/to/the/branch] email = Your Name <email@example.com>
- Override the two previous options by setting the global environment variable $BZREMAIL or $EMAIL ($BZREMAIL will take precedence) to your full email address.
The Bazaar documentation site has lots of useful info, although not specific to our usage.
CVS wizards may (or may not) benefit from BzrForCVSUsers.
All LF repositories are available at the following URL:
The repository is browseable, and has roughly the same functionality as cvsweb. Unofficial user branches are stored in "unofficial"; official branches from the workgroups are stored in a workgroup directory, with released and development versions in subdirectories.
To check out a copy:
bzr branch http://bzr.linux-foundation.org/unofficial/(project) (localdir)
bzr branch http://bzr.linux-foundation.org/lsb/3.1/(project) (localdir)
The webserve interface in the browser has links to the repository that work.
In general, you do not need commit access to contribute. Instead, branch from our read-only repositories, and send changes using "bzr send". Changes can be sent to the lsb-discuss mailing list.
People with a history of contributing to the LSB can request commit access. To do this, first set up an account on the main Linux Foundation site. Then, make a request to us via the mailing list or IRC. Be sure to include your LF user ID.
Once commit access is granted, read-write branches can be checked out over HTTPS, using your username and the 'https+urllib:' URL type. For example, to check out the devel version of misc-test as user "foo", you'd use the following URL: