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 ************ * Revision specifiers can now be given in a more DWIM form, without needing explicit prefixes for specifiers like tags or revision id's. See ``bzr help revisionspec`` for full details. (Matthew Fuller) * 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)