bzr 2.0.4
#########
:Codename: smooth sailing
:2.0.4: 2010-01-21
The fourth bugfix-only release in the 2.0 series contains more than a
dozen bugfixes relative to 2.0.3. The primary focus is on handling
interruptions and concurrent operations more cleanly, there is also a fair
improvement to ``bzr export`` when exporting a remote branch.
Bug Fixes
*********
* ``bzr annotate`` on another branch with ``-r branch:...`` no longer
fails with an ``ObjectNotLocked`` error. (Andrew Bennetts, #496590)
* ``bzr export dir`` now requests all file content as a record stream,
rather than requsting the file content one file-at-a-time. This can make
exporting over the network significantly faster (54min => 9min in one
case). (John Arbash Meinel, #343218)
* ``bzr serve`` no longer slowly leaks memory. The compiled
``bzrlib.bencode.Encoder()`` class was using ``__del__`` to cleanup and
free resources, and it should have been using ``__dealloc__``.
This will likely have an impact on any other process that is serving for
an extended period of time. (John Arbash Meinel, #494406)
* Check for SIGINT (Ctrl-C) and other signals immediately if ``readdir``
returns ``EINTR`` by calling ``PyErr_CheckSignals``. This affected the
optional ``_readdir_pyx`` extension. (Andrew Bennetts, #495023)
* Concurrent autopacks will no longer lose a newly created pack file.
There was a race condition, where if the reload happened at the right
time, the second packer would forget the name of the newly added pack
file. (John Arbash Meinel, Gareth White, #507566)
* Give a clearer message if the lockdir disappears after being apparently
successfully taken. (Martin Pool, #498378)
* Give a warning when fetching between repositories (local or remote) with
sufficiently different formats that the content will need to be
serialized (ie ``InterDifferingSerializer`` or ``inventory-deltas``), so
the user has a clue that upgrading could make it faster.
(Martin Pool, #456077)
* If we fail to open ``~/.bzr.log`` write a clear message to stderr rather
than using ``warning()``. The log file is opened before logging is set
up, and it leads to very confusing: 'no handlers for "bzr"' messages for
users, rather than something nicer.
(John Arbash Meinel, Barry Warsaw, #503886)
* Refuse to build with any Pyrex 0.9.4 release, as they have known bugs.
(Martin Pool, John Arbash Meinel, #449372)
* ``setup.py bdist_rpm`` now properly finds extra files needed for the
build. (there is still the distutils bug
http://bugs.python.org/issue644744) (Joe Julian, #175839)
* The 2a format wasn't properly restarting autopacks when something
changed underneath it (like another autopack). Now concurrent
autopackers will properly succeed. (John Arbash Meinel, #495000)
* ``TreeTransform`` can now handle when a delta says that the file id for
the tree root changes. Rather than trying to rename your working
directory, or failing early saying that you can't have multiple
tree roots. This also fixes revert, update, and pull when the root id
changes. (John Arbash Meinel, #494269, #504390)
* ``_update_current_block`` no longer suppresses exceptions, so ^C at just
the right time will get propagated, rather than silently failing to move
the block pointer. (John Arbash Meinel, Gareth White, #495023)
Testing
*******
* We have a new ``test_source`` that ensures all pyrex ``cdef`` functions
handle exceptions somehow. (Possibly by setting ``# cannot_raise``
rather than an ``except ?:`` clause.) This should help prevent bugs like
bug #495023. (John Arbash Meinel)