bzr 1.6rc1
##########

:Released: 2008-08-06

This release candidate for bzr 1.6 solidifies the new branch stacking
feature.  Bazaar now recommends that users upgrade all knit repositories,
because later formats are much faster.  However, we plan to continue read/write and
upgrade support for knit repostories for the forseeable future.  Several
other bugs and performance issues were fixed.

Changes
*******

* Knit format repositories are deprecated and bzr will now emit
  warnings whenever it encounters one.  Use ``bzr upgrade`` to upgrade
  knit repositories to pack format.  (Andrew Bennetts)

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

* ``bzr check`` can now be told which elements at a location it should
  check.  (Daniel Watkins)

* Commit now supports ``--exclude`` (or ``-x``) to exclude some files
  from the commit. (Robert Collins, #3117)

* Fetching data between repositories that have the same model but no
  optimised fetcher will not reserialise all the revisions, increasing
  performance. (Robert Collins, John Arbash Meinel)

* Give a more specific error when target branch is not reachable.
  (James Westby)

* Implemented a custom ``walkdirs_utf8`` implementation for win32.
  This uses a pyrex extension to get direct access to the
  ``FindFirstFileW`` style apis, rather than using ``listdir`` +
  ``lstat``. Shows a very strong improvement in commands like
  ``status`` and ``diff`` which have to iterate the working tree.
  Anywhere from 2x-6x faster depending on the size of the tree (bigger
  trees, bigger benefit.) (John Arbash Meinel)

* New registry for log properties handles  and the method in
  LongLogFormatter to display the custom properties returned by the
  registered handlers. (Guillermo Gonzalez, #162469)

Bug Fixes
*********

* Add more tests that stacking does not create deltas spanning
  physical repository boundaries.
  (Martin Pool, #252428)

* Better message about incompatible repositories.
  (Martin Pool, #206258)

* ``bzr branch --stacked`` ensures the destination branch format can
  support stacking, even if the origin does not.
  (Martin Pool)

* ``bzr export`` no longer exports ``.bzrrules``.
  (Ian Clatworthy)

* ``bzr serve --directory=/`` now correctly allows the whole
  filesystem to be accessed on Windows, not just the root of the drive
  that Python is running from.
  (Adrian Wilkins, #240910)

* Deleting directories by hand before running ``bzr rm`` will not
  cause subsequent errors in ``bzr st`` and ``bzr commit``.
  (Robert Collins, #150438)

* Fix a test case that was failing if encoding wasn't UTF-8.
  (John Arbash Meinel, #247585)

* Fix "no buffer space available" error when branching with the new
  smart server protocol to or from Windows.
  (Andrew Bennetts, #246180)

* Fixed problem in branching from smart server.
  (#249256, Michael Hudson, Martin Pool)

* Handle a file turning in to a directory in TreeTransform.
  (James Westby, #248448)

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

* ``MutableTree.commit`` has an extra optional keywork parameter
  ``exclude`` that will be unconditionally supplied by the command
  line UI - plugins that add tree formats may need an update.
  (Robert Collins)

* The API minimum version for plugin compatibility has been raised to
  1.6 - there are significant changes throughout the code base.
  (Robert Collins)

* The generic fetch code now uses three attributes on Repository objects
  to control fetch. The streams requested are controlled via :
  ``_fetch_order`` and ``_fetch_uses_deltas``. Setting these
  appropriately allows different repository implementations to recieve
  data in their optimial form. If the ``_fetch_reconcile`` is set then
  a reconcile operation is triggered at the end of the fetch.
  (Robert Collins)

* The ``put_on_disk`` and ``get_tar_item`` methods in
  ``InventoryEntry`` were deprecated. (Ian Clatworthy)

* ``Repository.is_shared`` doesn't take a read lock. It didn't
  need one in the first place (nobody cached the value, and
  ``RemoteRepository`` wasn't taking one either). This saves a round
  trip when probing Pack repositories, as they read the ``pack-names``
  file when locked. And during probe, locking the repo isn't very
  useful. (John Arbash Meinel)

Internals
*********

* ``bzrlib.branchbuilder.BranchBuilder`` is now much more capable of
  putting together a real history without having to create a full
  WorkingTree. It is recommended that tests that are not directly
  testing the WorkingTree use BranchBuilder instead.  See
  ``BranchBuilder.build_snapshot`` or
  ``TestCaseWithMemoryTree.make_branch_builder``.  (John Arbash Meinel)

* ``bzrlib.builtins.internal_tree_files`` broken into two giving a new
  helper ``safe_relpath_files`` - used by the new ``exclude``
  parameter to commit. (Robert Collins)

* Make it easier to introduce new WorkingTree formats.
  (Ian Clatworthy)

* The code for exporting trees was refactored not to use the
  deprecated ``InventoryEntry`` methods. (Ian Clatworthy)

* RuleSearchers return () instead of [] now when there are no matches.
  (Ian Clatworthy)


