bzr 2.1.0b1
###########
:Codename: While the cat is away
:2.1.0b1: 2009-10-14
This is the first development release in the new split "stable" and
"development" series. As such, the release is a snapshot of bzr.dev
without creating a release candidate first. This release includes a
fair amount of internal changes, with deprecated code being removed,
and several new feature developments. People looking for a stable code
base with only bugfixes should focus on the 2.0.1 release. All bugfixes
present in 2.0.1 are present in 2.1.0b1.
Highlights include support for ``bzr+ssh://host/~/homedir`` style urls,
finer control over the plugin search path via extended BZR_PLUGIN_PATH
syntax, visible warnings when extension modules fail to load, improved
error handling during unlocking and 'on-the-fly' compression when fetching
new content from a repository.
New Features
************
* Bazaar can now send mail through Apple OS X Mail.app.
(Brian de Alwis)
* ``bzr+ssh`` and ``bzr`` paths can now be relative to home directories
specified in the URL. Paths starting with a path segment of ``~`` are
relative to the home directory of the user running the server, and paths
starting with ``~user`` are relative to the home directory of the named
user. For example, for a user "bob" with a home directory of
``/home/bob``, these URLs are all equivalent:
* ``bzr+ssh://bob@host/~/repo``
* ``bzr+ssh://bob@host/~bob/repo``
* ``bzr+ssh://bob@host/home/bob/repo``
If ``bzr serve`` was invoked with a ``--directory`` argument, then no
home directories outside that directory will be accessible via this
method.
This is a feature of ``bzr serve``, so pre-2.1 clients will
automatically benefit from this feature when ``bzr`` on the server is
upgraded. (Andrew Bennetts, #109143)
* Extensions can now be compiled if either Cython or Pyrex is available.
Currently Pyrex is preferred, but that may change in the future.
(Arkanes)
* Give more control on BZR_PLUGIN_PATH by providing a way to refer to or
disable the user, site and core plugin directories.
(Vincent Ladeuil, #412930, #316192, #145612)
Bug Fixes
*********
* Bazaar's native protocol code now correctly handles EINTR, which most
noticeably occurs if you break in to the debugger while connected to a
bzr+ssh server. You can now can continue from the debugger (by typing
'c') and the process continues. However, note that pressing C-\ in the
shell may still kill the SSH process, which is bug 162509, so you must
sent a signal to the bzr process specifically, for example by typing
``kill -QUIT PID`` in another shell. (Martin Pool, #341535)
* ``bzr add`` in a tree that has files with ``\r`` or ``\n`` in the
filename will issue a warning and skip over those files.
(Robert Collins, #3918)
* ``bzr dpush`` now aborts if uncommitted changes (including pending merges)
are present in the working tree. The configuration option ``dpush_strict``
can be used to set the default for this behavior.
(Vincent Ladeuil, #438158)
* ``bzr merge`` and ``bzr remove-tree`` now requires --force if pending
merges are present in the working tree.
(Vincent Ladeuil, #426344)
* Clearer message when Bazaar runs out of memory, instead of a ``MemoryError``
traceback. (Martin Pool, #109115)
* Don't give a warning on Windows when failing to import ``_readdir_pyx``
as it is never built. (John Arbash Meinel, #430645)
* Don't restrict the command name used to run the test suite.
(Vincent Ladeuil, #419950)
* ftp transports were built differently when the kerberos python module was
present leading to obscure failures related to ASCII/BINARY modes.
(Vincent Ladeuil, #443041)
* Network streams now decode adjacent records of the same type into a
single stream, reducing layering churn. (Robert Collins)
* PreviewTree behaves correctly when get_file_mtime is invoked on an unmodified
file. (Aaron Bentley, #251532)
* Registry objects should not use iteritems() when asked to use items().
(Vincent Ladeuil, #430510)
* Weave based repositories couldn't be cloned when committers were using
domains or user ids embedding '.sig'. Now they can.
(Matthew Fuller, Vincent Ladeuil, #430868)
Improvements
************
* Bazaar gives a warning before exiting, and writes into ``.bzr.log``, if
compiled extensions can't be loaded. This typically indicates a
packaging or installation problem. In this case Bazaar will keep
running using pure-Python versions, but this may be substantially
slower. The warning can be disabled by setting
``ignore_missing_extensions = True`` in ``bazaar.conf``.
See also <https://answers.launchpad.net/bzr/+faq/703>.
(Martin Pool, #406113, #430529)
* Secondary errors that occur during Branch.unlock and Repository.unlock
no longer obscure the original error. These methods now use a new
decorator, ``only_raises``. This fixes many causes of
``TooManyConcurrentRequests`` and similar errors.
(Andrew Bennetts, #429747)
Documentation
*************
* Describe the new shell-like test feature. (Vincent Ladeuil)
* Help on hooks no longer says 'Not deprecated' for hooks that are
currently supported. (Ian Clatworthy, #422415)
API Changes
***********
* ``bzrlib.user_encoding`` has been removed; use
``bzrlib.osutils.get_user_encoding`` instead. (Martin Pool)
* ``bzrlib.tests`` now uses ``stopTestRun`` for its ``TestResult``
subclasses - the same as python's unittest module. (Robert Collins)
* ``diff._get_trees_to_diff`` has been renamed to
``diff.get_trees_and_branches_to_diff``. It is now a public API, and it
returns the old and new branches. (Gary van der Merwe)
* ``bzrlib.trace.log_error``, ``error`` and ``info`` have been deprecated.
(Martin Pool)
* ``MutableTree.has_changes()`` does not require a tree parameter anymore. It
now defaults to comparing to the basis tree. It now checks for pending
merges too. ``Merger.check_basis`` has been deprecated and replaced by the
corresponding has_changes() calls. ``Merge.compare_basis``,
``Merger.file_revisions`` and ``Merger.ensure_revision_trees`` have also
been deprecated.
(Vincent Ladeuil, #440631)
* ``ProgressTask.note`` is deprecated.
(Martin Pool)
Internals
*********
* Added ``-Drelock`` debug flag. It will ``note`` a message every time a
repository or branch object is unlocked then relocked the same way.
(Andrew Bennetts)
* ``BTreeLeafParser.extract_key`` has been tweaked slightly to reduce
mallocs while parsing the index (approx 3=>1 mallocs per key read).
This results in a 10% speedup while reading an index.
(John Arbash Meinel)
* The ``bzrlib.lsprof`` module has a new class ``BzrProfiler`` which makes
profiling in some situations like callbacks and generators easier.
(Robert Collins)
Testing
*******
* Passing ``--lsprof-tests -v`` to bzr selftest will cause lsprof output to
be output for every test. Note that this is very verbose! (Robert Collins)
* Setting ``BZR_TEST_PDB=1`` when running selftest will cause a pdb
post_mortem to be triggered when a test failure occurs. (Robert Collins)
* Shell-like tests can now be written. Code in ``bzrlib/tests/script.py`` ,
documentation in ``developers/testing.txt`` for details.
(Vincent Ladeuil)
* Some tests could end up with the same id, that was dormant for
a long time.
(Vincent Ladeuil, #442980)
* Stop showing the number of tests due to missing features in the test
progress bar. (Martin Pool)
* Test parameterisation now does a shallow copy, not a deep copy of the test
to be parameterised. This is not expected to break external use of test
parameterisation, and is substantially faster. (Robert Collins)
* Tests that try to open a bzr dir on an arbitrary transport will now
fail unless they have explicitly permitted the transport via
``self.permit_url``. The standard test factories such as ``self.get_url``
will permit the urls they provide automatically, so only exceptional
tests should need to do this. (Robert Collins)
* The break-in test no longer cares about clean shutdown of the child,
instead it is happy if the debugger starts up. (Robert Collins)
* The full test suite is expected to pass when the C extensions are not
present. (Vincent Ladeuil, #430749)
bzr 2.0.1
#########
:Codename: Stability First
:2.0.1: 2009-10-14
The first of our new ongoing bugfix-only stable releases has arrived. It
includes a collection of 12 bugfixes applied to bzr 2.0.0, but does not
include any of the feature development in the 2.1.0 series.
Bug Fixes
*********
* ``bzr add`` in a tree that has files with ``\r`` or ``\n`` in the
filename will issue a warning and skip over those files.
(Robert Collins, #3918)
* bzr will attempt to authenticate with SSH servers that support
``keyboard-interactive`` auth but not ``password`` auth when using
Paramiko. (Andrew Bennetts, #433846)
* Fixed fetches from a stacked branch on a smart server that were failing
with some combinations of remote and local formats. This was causing
"unknown object type identifier 60" errors. (Andrew Bennetts, #427736)
* Fixed ``ObjectNotLocked`` errors when doing some log and diff operations
on branches via a smart server. (Andrew Bennetts, #389413)
* Handle things like ``bzr add foo`` and ``bzr rm foo`` when the tree is
at the root of a drive. ``osutils._cicp_canonical_relpath`` always
assumed that ``abspath()`` returned a path that did not have a trailing
``/``, but that is not true when working at the root of the filesystem.
(John Arbash Meinel, Jason Spashett, #322807)
* Hide deprecation warnings for 'final' releases for python2.6.
(John Arbash Meinel, #440062)
* Improve the time for ``bzr log DIR`` for 2a format repositories.
We had been using the same code path as for <2a formats, which required
iterating over all objects in all revisions.
(John Arbash Meinel, #374730)
* Make sure that we unlock the tree if we fail to create a TreeTransform
object when doing a merge, and there is limbo, or pending-deletions
directory. (Gary van der Merwe, #427773)
* Occasional IndexError on renamed files have been fixed. Operations that
set a full inventory in the working tree will now go via the
apply_inventory_delta code path which is simpler and easier to
understand than dirstates set_state_from_inventory method. This may
have a small performance impact on operations built on _write_inventory,
but such operations are already doing full tree scans, so no radical
performance change should be observed. (Robert Collins, #403322)
* Retrieving file text or mtime from a _PreviewTree has good performance when
there are many changes. (Aaron Bentley)
* The CHK index pages now use an unlimited cache size. With a limited
cache and a large project, the random access of chk pages could cause us
to download the entire cix file many times.
(John Arbash Meinel, #402623)
* When a file kind becomes unversionable after being added, a sensible
error will be shown instead of a traceback. (Robert Collins, #438569)
Documentation
*************
* Improved README. (Ian Clatworthy)
* Improved upgrade documentation for Launchpad branches.
(Barry Warsaw)