*************************
What's New in Bazaar 2.5?
*************************

Bazaar 2.5 has been released on the 24th of February 2012 and marks the
start of a new long-term-stable series. From here, we will only make bugfix
releases on the 2.5 series (2.5.1, etc, and support it until April 2017),
while 2.6 will become our new development series.

This document accumulates a high level summary of what's changed.  See the
:doc:`../release-notes/index` for a full list.

Users are encouraged to upgrade from the other stable series.  This
document outlines the improvements in Bazaar 2.5 vs Bazaar 2.4. 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.5.0 is fully compatible both locally and on the network with 2.0,
2.1, 2.2, 2.3 and 2.4, and can read and write repositories generated by all
previous versions.

Bazaar 2.5.1 includes all the fixes in the un-released 2.0.7, 2.1.5, 2.2.6,
2.3.5 and 2.4.3 versions that weren't included in 2.5.0 and fixes some bugs
on its own.

Overriding configuration options from the command line
******************************************************

The ``-O`` parameter available for all bzr commands allows a user to
override a configuration option from the command line. For example::

  bzr pull -v -Olog_format=line

will change the way the pulled revisions are displayed (the default log
format is ``long``). This a work in progress and only some options are
supported so far.

Working on a posix system without a locale
******************************************

Previously bzr needed a valid locale set to work with branches containing
non-ascii filenames. It will now use utf-8 rather than ascii as a fallback
encoding for interacting with the filesystem. This makes creating a working
tree and commiting to it possible for such branches in most environments.

SSL Certificate Verification Support in urllib HTTPS backend
************************************************************

In previous versions of Bazaar, only one of the two supported HTTPS
backends, pycurl, supported verification of SSL certificates. This version
also introduces this support for the urllib backend.

Along with this support two new options have been introduced to control
which CA's are trusted and to what degree server certificates should be
verified. See ``bzr help ssl.ca_certs`` and ``bzr help ssl.cert_reqs``
for more information

Users who have previously used the urllib HTTPS backend with servers
with invalid or untrusted certificates can continue to do so by
adding the required certificates to the trusted CA certificate file
(recommended) or by setting the ``ssl.cert_reqs`` option to ``none``.

Faster smart server
*******************

A large number of new methods have been added to the smart server, making
raw file access through the VFS unnecessary in almost all situations, with
the major exception of operations involving stacked branches.

Commands that have become significantly faster when using a remote branch
over ``bzr://``, ``bzr+ssh://`` or ``bzr+http://`` include:

 * ``bzr checkout --lightweight``
 * ``bzr export``
 * ``bzr cat``
 * ``bzr ls``
 * ``bzr send``

Several commands which used to make multiple connections to the server now
make only a single one. Connection setup has a fairly high overhead,
especially to Launchpad, so this can save several seconds for some
commands.

To benefit from the improved smart server, both the server and the
client need to be running bzr 2.5.

Basic colocated branch support
******************************

The UI now has basic support for colocated branches. In full URLs,
a specific colocated branch can be specified using URL path segment
parameters. For example a branch named ``stronk`` could be addressed using
``http://example.com/path/to/dir,branch=stronk``.

The new ``bzr branches`` command can be used to list all present branches
in a directory, and indicates what the currently active branch is.

Several commands also accept co-located branch names directly, such as
``bzr switch``.

Feature flags
*************

All Bazaar formats now allow setting ``feature flags``. These can be used
by plugins to extend Bazaar formats and require the presence of particular
plugins or versions of Bazaar to open them, without having to introduce
completely new formats.

See ``doc/developers/feature-flags.txt`` for details.

Branch history access
*********************

Several commands or options that previously required access to the full
branch history now only access those parts of the history they actually
need. This significantly improves their performance for branches
with large histories.

GPG signatures
**************

A new command ``bzr verify-signatures`` can be used to verify GPG
signatures made with ``bzr commit`` or the ``bzr sign-my-commits``
command.

Translations
************

Most error messages, help topics and other user-visible text can now be
translated. Initial translations for Russian, Japanese and Spanish exist.

PO merge plugin
***************

The ``po_merge`` plugin has been added.  It provides a merge hook
to automate merging of changes to gettext template files. Refer to
``bzr help po_merge`` for documentation on how to
enable it and what it can do.

Documentation in texinfo format
*******************************

Sphinx (>= 1.1.2) provides a better texinfo builder than the alpha-quality
one provided with bzr sources. Most of the bzr documentation can be
processed and produce valid ``.info`` files.

Further information
*******************

For more detailed information on the changes made, see the the
:doc:`../release-notes/index` for:

* the interim bzr `milestones <https://launchpad.net/bzr/2.5>`_
* the plugins you use.

For a summary of changes made in earlier releases, see:

* :doc:`whats-new-in-2.1`
* :doc:`whats-new-in-2.2`
* :doc:`whats-new-in-2.3`
* :doc:`whats-new-in-2.4`

..
   vim: tw=74 ft=rst ff=unix
