Our first post-2.0 releases of Bazaar have finally become official. Now that we are at 2.0, we decided to split a stable releases series and a development series. As such, 2.0.1 has only bugfixes relative to the 2.0 release, while new features and potential compatibility changes are contained only within 2.1.0b1. All of the changes in 2.0.1 are available in 2.1.0b1. Thanks to everyone who has helped polish the 2.0.1 release, and ensure that our next 2.1 stable release will have lots of interesting changes to come. To get your own copy, please visit http://bazaar-vcs.org/Download. Packages for many popular platforms are available. The short summaries of changes are: 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. 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, and improved error handling during unlocking. John =:-> This is the full NEWS entry about all bugs/features fixed and released relative to 2.0.0: 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, and improved error handling during unlocking. 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)