What’s New in Bazaar 2.2?
Bazaar 2.2.0, released on the 6th of August 2010, marks the start of
another long-term-stable series. From here, we will only make bugfix
releases on the 2.2 series (2.2.1, etc), while 2.3 will become our new
development series. The 2.0 and 2.1 series will also continue to get
bugfixes. (Currently 2.0 is planned to be supported for another 6 months.)
The main changes in 2.2 are: better local and network performance,
reduced memory usage, and several user-interface improvements.
Users are encouraged to upgrade from the other stable series. This
document outlines the improvements in Bazaar 2.2 vs Bazaar 2.1. As well as
summarizing improvements made to the core product, it highlights
enhancements within the broader Bazaar world of potential interest to
those upgrading.
Bazaar 2.2.0 includes all the fixes from 2.1.2 and 2.0.6.
Over 120 bugs have been fixed in total. See the
Bazaar Release Notes for a full list.
Bazaar 2.2.1 includes all the fixes from 2.1.3 and 2.0.6 (that
weren’t included in 2.2.0).
See the Bazaar Release Notes for details.
Bazaar 2.2.2 focused on fixes to improve our Ubuntu release workflow (which
should also help all other distributions).
See the Bazaar Release Notes for details.
Bazaar 2.2.3 focused on fixes related to interactions with the launchpad
server and python-2.7 compatibility.
Bazaar 2.2.4 fixed a regression for some interactions with the launchpad
server.
Bazaar 2.2.5 fixed a regression in some rare conflict resolutions and warns
when branching an out-of-date ubuntu packaging branch.
See the Bazaar Release Notes for details.
Bazaar 2.2 is fully compatible both locally and on the network with 2.0
and 2.1, and can read and write repositories generated by all previous
versions.
Behaviour changes
There are some compatibility changes in this release.
- For commandline users we no longer guess user identity for bzr
commit: users must specify their identity using bzr whoami (you
don’t need to specify your identity for readonly operations).
This avoids problems where the previous guessed default caused commits
be recorded as coming from, for example <sam@localhost>.
Improved conflict handling
Tree-shape conflicts can be resolved by providing --take-this and
--take-other to the bzr resolve command. Just marking the conflict
as resolved is still accessible via the --done default action.
Command improvements
- Added bzr remove-branch command that can remove a local or remote
branch. (Jelmer Vernooij, #276295)
- bzr export now takes an optional argument --per-file-timestamps
to set file mtimes to the last timestamp of the last revision in which
they were changed rather than the current time. (Jelmer Vernooij)
- Tag names can now be determined automatically by automatic_tag_name
hooks on Branch if they are not specified on the command line.
(Jelmer Vernooij)
- Tree-shape conflicts can be resolved by providing --take-this and
--take-other to the bzr resolve command. Just marking the conflict
as resolved is still accessible via the --done default action.
(Vincent Ladeuil)
- The --directory option is supported for a number of additional
commands: added, annotate, bind, cat, cat-revision, clean-tree,
conflicts, deleted, export, ignore, ignored, lookup-revision, ls,
merge-directive, missing, modified, nick, re-sign, resolve, shelve,
switch, unbind, unknowns, unshelve, whoami.
(Martin von Gagern, #527878)
- bzr commit accepts -p (for “patch”) as a shorter name for
--show-diff.
(Parth Malwankar, #571467)
- bzr ignore now supports a --default-rules option that displays
the default ignore rules used by bzr. The flag --old-default-rules
is no longer supported by ignore.
(Parth Malwankar, #538703)
- bzr pack now supports a --clean-obsolete-packs option that
can save disk space by deleting obsolete pack files created during the
pack operation.
(Parth Malwankar, #304320)
- New command line option --authors to bzr log allows users to
select which of the apparent authors and committer should be
included in the log. Defaults depend on format. (Martin von Gagern, #513322)
- The bash_completion plugin from the bzr-bash-completion project has
been merged into the tree. It provides a bash-completion command and
replaces the outdated contrib/bash/bzr script with a version
using the plugin. (Martin von Gagern, #560030)
- A new transport based on GIO (the gnome i/o library) provides access to
samba shares, webdav using gio+smb and gio+dav. It is also possible to
use gio for some already existing transport methods as gio+file,
gio+sftp, gio+ftp.
(Mattias Eriksson)
Controlling plugins
- Plugins can be disabled by defining BZR_DISABLE_PLUGINS as
a list of plugin names separated by ‘:’ (‘;’ on windows).
(Vincent Ladeuil, #411413)
- Plugins can be loaded from arbitrary locations by defining
BZR_PLUGINS_AT as a list of name@path separated by ‘:’ (‘;’ on
Microsoft
Windows). This takes precedence over BZR_PLUGIN_PATH for the
specified plugins, and is expected to be most useful for plugin
developers.
(Vincent Ladeuil, #82693)
Apport crash reporting
- If the Apport crash-reporting tool is available, bzr crashes are now
stored into the /var/crash apport spool directory, and the user is
invited to report them to the developers from there, either
automatically or by running apport-bug. No information is sent
without specific permission from the user. (Martin Pool, #515052)
Improved Launchpad integration
- Merges can be proposed on Launchpad with the new lp-propose-merge
command.
Better documentation
- bzr help patterns now explains case insensitive patterns and
points to Python regular expression documentation.
(Parth Malwankar, #594386)
- Numerous improvements have been made to the developer documentation.
Changes to plugins
bzr grep
The grep plugin has developed well
during the bzr 2.2 cycle. bzr grep can search the versioned files in the
working tree, or in one or a series of revisions, or it can search through
only the changes in a revision range.
qbzr
qbzr, a cross-platform graphical interface
to Bazaar, gained many features and fixes in its 0.19 release, including:
- qannotate has new look and feel; with new features: find text and goto
to line.
- Improved performance of qlog, and treewidget-based dialogs (qcommit,
qadd, qrevert etc.)
- qpush, qmerge, etc.: when there are uncommitted changes in the working
tree, user has the option to commit, or revert.
- qcommit: user can update bound branch/checkout if it is not up to date.
- Better support of Mac OS X: dialog windows no more start in background.
- qlog: Context menu actions for tag and revert will now show a branch
menu if more than one branch is open.
- qlog: more context menu actions for update, cherry-pick, and reverse
cherry-pick.
- Language of GUI can be set in DEFAULT section of bazaar.conf
as language = code. Language codes are the same
as for LANG environment variable.
Environment variable LANGUAGE still preferred over settings
in bazaar.conf.
API changes
- BzrError subclasses no longer support the name “message” to be used
as an argument for __init__ or in _fmt format specification as this
breaks in some Python versions. errors.LockError.__init__ argument
is now named “msg” instead of earlier “message”.
(Parth Malwankar, #603461)
- The old bzr selftest --benchmark option has been removed.
<https://launchpad.net/bzr-usertest> is an actively-maintained
macrobenchmark suite.
(Martin Pool)
- bzrlib library users now need to call __enter__ and __exit__ on
the result of bzrlib.initialize. This change was made when fixing
the bad habit recent bzr versions have had of leaving progress bars
behind on the screen. That required calling another function before
exiting the program, and it made sense to provide a full context
manager at the same time. (Robert Collins)
- The bzr front end now requires a bzrlib.ui.ui_factory which is a
context manager in the Python 2.5 and above sense. The bzrlib base class
is such a manager, but third party UI factories which do not derive from
bzrlib.ui.UIFactory will be incompatible with the command line front
end.
- URLs like foo:bar/baz are now always parsed as a URL with scheme “foo”
and path “bar/baz”, even if bzr does not recognize “foo” as a known URL
scheme. Previously these URLs would be treated as local paths.
(Gordon Tyler)