bzr 1.5rc1
##########

:Released: 2008-05-09

Changes
*******

* Broader support of GNU Emacs mail clients. Set
  ``mail_client=emacsclient`` in your bazaar.conf and ``send`` will pop the
  bundle in a mail buffer according to the value of ``mail-user-agent``
  variable. (Xavier Maillard)

Improvements
************

* Diff now handles revision specs like "branch:" and "submit:" more
  efficiently.  (Aaron Bentley, #202928)

* More friendly error given when attempt to start the smart server
  on an address already in use. (Andrea Corbellini, #200575)

* Pull completes much faster when there is nothing to pull.
  (Aaron Bentley)

Bugfixes
********

* Authentication.conf can define sections without password.
  (Vincent Ladeuil, #199440)

* Avoid muttering every time a child update does not cause a progress bar
  update. (John Arbash Meinel, #213771)

* ``Branch.reconcile()`` is now implemented. This allows ``bzr reconcile``
  to fix when a Branch has a non-canonical mainline history. ``bzr check``
  also detects this condition. (John Arbash Meinel, #177855)

* ``bzr log -r ..X bzr://`` was failing, because it was getting a request
  for ``revision_id=None`` which was not a string.
  (John Arbash Meinel, #211661)

* ``bzr commit`` now works with Microsoft's FTP service.
  (Andreas Deininger)

* Catch definitions outside sections in authentication.conf.
  (Vincent Ladeuil, #217650)

* Conversion from non-rich-root to rich-root(-pack) updates inventory
  sha1s, even when bundles are used.  (Aaron Bentley, #181391)

* Conversion from non-rich-root to rich-root(-pack) works correctly even
  though search keys are not topologically sorted.  (Aaron Bentley)

* Conversion from non-rich-root to rich-root(-pack) works even when a
  parent revision has a different root id.  (Aaron Bentley, #177874)

* Disable strace testing until strace is fixed (see bug #103133) and emit a
  warning when selftest ends to remind us of leaking tests.
  (Vincent Ladeuil, #226769)

* Fetching all revisions from a repository does not cause pack collisions.
  (Robert Collins, Aaron Bentley, #212908)

* Fix error about "attempt to add line-delta in non-delta knit".
  (Andrew Bennetts, #217701)

* Pushing a branch in "dirstate" format (Branch5) over bzr+ssh would break
  if the remote server was < version 1.2. This was due to a bug in the
  RemoteRepository.get_parent_map() fallback code.
  (John Arbash Meinel, #214894)

* Remove leftover code in ``bzr_branch`` that inappropriately creates
  a ``branch-name`` file in the branch control directory.
  (Martin Pool)

* Set SO_REUSEADDR on server sockets of ``bzr serve`` to avoid problems
  rebinding the socket when starting the server a second time.
  (John Arbash Meinel, Martin Pool, #164288)

* Severe performance degradation in fetching from knit repositories to
  knits and packs due to parsing the entire revisions.kndx on every graph
  walk iteration fixed by using the Repository.get_graph API.  There was
  another regression in knit => knit fetching which re-read the index for
  every revision each side had in common.
  (Robert Collins, John Arbash Meinel)

* When logging the changes to a particular file, there was a bug if there
  were ghosts in the revision ancestry. (John Arbash Meinel, #209948)

* xs4all's ftp server returns a temporary error when trying to list an
  empty directory, rather than returning an empty list. Adding a
  workaround so that we don't get spurious failures.
  (John Arbash Meinel, #215522)

Documentation
*************

* Expanded the User Guide to include new chapters on popular plugins and
  integrating Bazaar into your environment. The *Best practices* chapter
  was renamed to *Miscellaneous topics* as suggested by community
  feedback as well. (Ian Clatworthy)

* Document outlining strategies for TortoiseBzr. (Mark Hammond)

* Improved the documentation on hooks. (Ian Clatworthy)

* Update authentication docs regarding ssh agents.
  (Vincent Ladeuil, #183705)

Testing
*******

* Add ``thread_name_suffix`` parameter to SmartTCPServer_for_testing, to
  make it easy to identify which test spawned a thread with an unhandled
  exception. (Andrew Bennetts)

* New ``--debugflag``/``-E`` option to ``bzr selftest`` for setting
  options for debugging tests, these are complementary to the -D
  options.  The ``-Dselftest_debug`` global option has been replaced by the
  ``-E=allow_debug`` option for selftest. (Andrew Bennetts)

* Parameterised test ids are preserved correctly to aid diagnosis of test
  failures. (Robert Collins, Andrew Bennetts)

* selftest now accepts --starting-with <id> to load only the tests whose id
  starts with the one specified. This greatly speeds up running the test
  suite on a limited set of tests and can be used to run the tests for a
  single module, a single class or even a single test.  (Vincent Ladeuil)

* The test suite modules have been modified to define load_tests() instead
  of test_suite(). That speeds up selective loading (via --load-list)
  significantly and provides many examples on how to migrate (grep for
  load_tests).  (Vincent Ladeuil)

Internals
*********

* ``Hooks.install_hook`` is now deprecated in favour of
  ``Hooks.install_named_hook`` which adds a required ``name`` parameter, to
  avoid having to call ``Hooks.name_hook``. (Daniel Watkins)

* Implement xml8 serializer.  (Aaron Bentley)

* New form ``@deprecated_method(deprecated_in(1, 5, 0))`` for making
  deprecation wrappers.  (Martin Pool)

* ``Repository.revision_parents`` is now deprecated in favour of
  ``Repository.get_parent_map([revid])[revid]``. (Jelmer Vernooij)

* The Python ``assert`` statement is no longer used in Bazaar source, and
  a test checks this.  (Martin Pool)

API Changes
***********

* ``bzrlib.status.show_pending_merges`` requires the repository to be
  locked by the caller. Callers should have been doing it anyway, but it
  will now raise an exception if they do not. (John Arbash Meinel)

* Repository.get_data_stream, Repository.get_data_stream_for_search(),
  Repository.get_deltas_for_revsions(), Repository.revision_trees(),
  Repository.item_keys_introduced_by() no longer take read locks.
  (Aaron Bentley)

* ``LockableFiles.get_utf8`` and ``.get`` are deprecated, as a start
  towards removing LockableFiles and ``.control_files`` entirely.
  (Martin Pool)

* Methods deprecated prior to 1.1 have been removed.
  (Martin Pool)


