External Compatibility Breaks
*****************************
* Do not treat configuration option 'check_signatures = require' as if
it were 'create_signatures = always' (Jonathan Riddell)
New Features
************
* Hooks have been added for config stacks: ``get``, ``set`` and ``remove``
are called when an option is repsectively read, modified or deleted. Also
added ``load`` and ``save`` hooks for config stores, called when the
stores are loaded or saved. (Vincent Ladeuil)
* New hook server_exception in bzrlib.smart.server to catch any
exception caused while running bzr serve.
(Jonathan Riddell, #274578)
* New hook set_commit_message in bzrlib.msgeditor to set
a commit message and revision properties. (Jonathan Riddell,
#274578)
* Support ``-S`` as an alias for ``--short`` for the ``log`` and
``missing`` commands. (Martin von Gagern, #38655)
Improvements
************
* ``bzr annotate`` can be run without setting whoami data first. (Jonathan
Riddell, #667408)
Bug Fixes
*********
* Bazaar can now detect when a lock file is held by a dead process
originating from the same machine, and steal the lock after printing a
message to the user. This is off by default, for safety, but can be
turned on by setting the configuration variable ``locks.steal_dead`` to
``True``.
(Martin Pool, #220464)
* Credentials in the log output produced by ``-Dhttp`` are masked so users
can more freely post them in bug reports. (Vincent Ladeuil, #723074)
* Fix a race condition for ``server_started`` hooks leading to a spurious
test failure. (Vincent Ladeuil, #789167)
* Fix exporting subdirectory with ``--per-file-timestamps``.
(Szilveszter Farkas, #795557)
* Handle files that get created but don't get used during TreeTransform.
``open()`` can create a file, and still raise an exception before it
returns. So anything we might have created, make sure we destroy during
``finalize()``. (Martin [gz], #597686)
* ``pack_repo`` now uses ``Transport.move`` instead of
``Transport.rename``, deleting any existing targets even on SFTP.
(Martin von Gagern, #421776)
* Pass the ``build_mo`` command to the rest of the setup() calls in
setup.py. The ``bdist_wininst`` and ``py2exe`` code paths were failing
because ``build_mo`` became a required step that they didn't know about.
(John Arbash Meinel, #787122)
* Properly avoid re-adding a file after it changes case on CICP
filesystems. (John Arbash Meinel, #798130)
* Reports the original error when an InvalidHttpResponse exception is
encountered to facilitate debug. (Vincent Ladeuil, #788530)
* Reports a non-existant file error when trying to merge in a file
that does not exist. (Jonathan Riddell, #330063)
* ``UIFactory.prompt``, ``UIFactory.get_username``,
``UIFactory.get_password`` and ``UIFactory.get_boolean`` now require a
unicode prompt to be passed in. (Jelmer Vernooij, #592083)
* Support merging into the empty tree. (Aaron Bentley, #595328)
Documentation
*************
* Improve documentation of ``bzr merge --force``.
(Neil Martinsen-Burrell, #767307)
* Make docs for configuration options for digital signatures match
reality. (Jonathan Riddell)
* Add user-guide page on GPG signatures. (Jonathan Riddell)
API Changes
***********
* Information about held lockdir locks returned from eg `LockDir.peek` is
now represented as a `LockHeldInfo` object, rather than a plain
Python dict.
(Martin Pool)
* Remove `file_status` function.
(Martin Pool)
* ``Repository.iter_reverse_revision_history`` is now deprecated.
Use ``Graph.iter_lefthand_ancestry`` instead.
(Jelmer Vernooij, #739481)
Internals
*********
* ``tools/check-newsbugs.py`` accepts a ``--browser`` option to open
corresponding launchpad pages in a browser. (Vincent Ladeuil)
Testing
*******
* A `ImportTariffTestCase` base class has been added in
``bzrlib.tests.test_import_tariff``, which can be used for import tariff
tests in plugins. (Jelmer Vernooij, #793465)
* Fix deadlock in `TestImportTariffs.test_simple_serve` when stderr gets
more output than fits in the default buffer. This was happening on the
Windows buildslave, and could easily happen in other circumstances where
the default OS buffer size for pipes is small or the ``python -v``
output is large. (Andrew Bennetts, #784802)
* Fix spurious test failure on OSX for WorkingTreeFormat2.
(Vincent Ladeuil, #787942)
* Re-target ``bb.test_merge.TestMerge.test_merge_reversed_revision_range``
and rewrite it as a parameterized test to avoid unrelated failures.
(Vincent Ladeuil, #795456)
* Show log file contents from subprocesses started by
`start_bzr_subprocess` in test failure details. This may help diagnose
strange hangs and failures involving subprocesses. (Andrew Bennetts)
* Skip ``utextwrap`` tests when ``sphinx`` breaks text_wrap by an hostile
monkeypatch to textwrap.TextWrapper.wordsep_re.
(Vincent Ladeuil, #785098)
* Multiple ``selftest --exclude`` options are now combined instead of
overriding each other. (Vincent Ladeuil, #746991)
* Restore some ``FTPTransport`` test coverage by allowing ``pyftpdlib
0.6.0`` to be used. Also restore ``medusa`` support while leaving it
disabled to make it easier to use if/when we can in the future.
(Vincent Ladeuil, #781140)
* `TestImportTariffs` no longer uses the real ``$HOME``. This prevents it
from polluting ``$HOME/.bzr.log`` or being accidentally influenced by
user configuration such as aliases. It still runs with all the user's
plugins enabled, as intended.
(Vincent Ladeuil, Andrew Bennetts, #789505)