####################
Bazaar Release Notes
####################

.. toctree::
   :maxdepth: 1

bzr 0.11
########

:Released:  2006-10-02

* Smart server transport test failures on windows fixed. (Lukáš Lalinský).

bzr 0.11rc2
###########

:Released:  2006-09-27

Bug Fixes
*********

* Test suite hangs on windows fixed. (Andrew Bennets, Alexander Belchenko).

* Commit performance regression fixed. (Aaron Bentley, Robert Collins, John
  Arbash Meinel).

bzr 0.11rc1
###########

:Released:  2006-09-25

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

* Knit files now wait to create their contents until the first data is
  added. The old code used to create an empty .knit and a .kndx with just
  the header. However, this caused a lot of extra round trips over SFTP.
  This can change the time for ``bzr push`` to create a new remote branch
  from 160s down to 100s. This also affects ``bzr commit`` performance when
  adding new files, ``bzr commit`` on a new kernel-like tree drops from 50s
  down to 40s (John Arbash Meinel, #44692)

* When an entire subtree has been deleted, commit will now report that
  just the top of the subtree has been deleted, rather than reporting
  all the individual items. (Robert Collins)

* Commit performs one less XML parse. (Robert Collins)

* ``bzr checkout`` now operates on readonly branches as well
  as readwrite branches. This fixes bug #39542. (Robert Collins)

* ``bzr bind`` no longer synchronises history with the master branch.
  Binding should be followed by an update or push to synchronise the
  two branches. This is closely related to the fix for bug #39542.
  (Robert Collins)

* ``bzrlib.lazy_import.lazy_import`` function to create on-demand
  objects.  This allows all imports to stay at the global scope, but
  modules will not actually be imported if they are not used.
  (John Arbash Meinel)

* Support ``bzr://`` and ``bzr+ssh://`` URLS to work with the new RPC-based
  transport which will be used with the upcoming high-performance smart
  server. The new command ``bzr serve`` will invoke bzr in server mode,
  which processes these requests. (Andrew Bennetts, Robert Collins, Martin
  Pool)

* New command ``bzr version-info`` which can be used to get a summary
  of the current state of the tree. This is especially useful as part
  of a build commands. See ``doc/version_info.txt`` for more information
  (John Arbash Meinel)

Bug Fixes
*********

* ``'bzr inventory [FILE...]'`` allows restricting the file list to a
  specific set of files. (John Arbash Meinel, #3631)

* Don't abort when annotating empty files (John Arbash Meinel, #56814)

* Add ``Stanza.to_unicode()`` which can be passed to another Stanza
  when nesting stanzas. Also, add ``read_stanza_unicode`` to handle when
  reading a nested Stanza. (John Arbash Meinel)

* Transform._set_mode() needs to stat the right file.
  (John Arbash Meinel, #56549)

* Raise WeaveFormatError rather than StopIteration when trying to read
  an empty Weave file. (John Arbash Meinel, #46871)

* Don't access e.code for generic URLErrors, only HTTPErrors have .code.
  (Vincent Ladeuil, #59835)

* Handle boundary="" lines properly to allow access through a Squid proxy.
  (John Arbash Meinel, #57723)

* revert now removes newly-added directories (Aaron Bentley, #54172)

* ``bzr upgrade sftp://`` shouldn't fail to upgrade v6 branches if there
  isn't a working tree. (David Allouche, #40679)

* Give nicer error messages when a user supplies an invalid --revision
  parameter. (John Arbash Meinel, #55420)

* Handle when LANG is not recognized by python. Emit a warning, but
  just revert to using 'ascii'. (John Arbash Meinel, #35392)

* Don't use ``preexec_fn`` on win32, as it is not supported by subprocess.
  (John Arbash Meinel)

* Skip specific tests when the dependencies aren't met. This includes
  some ``setup.py`` tests when ``python-dev`` is not available, and
  some tests that depend on paramiko. (John Arbash Meinel, Mattheiu Moy)

* Fallback to Paramiko properly, if no ``ssh`` executable exists on
  the system. (Andrew Bennetts, John Arbash Meinel)

* ``Branch.bind(other_branch)`` no longer takes a write lock on the
  other branch, and will not push or pull between the two branches.
  API users will need to perform a push or pull or update operation if they
  require branch synchronisation to take place. (Robert Collins, #43744)

* When creating a tarball or zipfile export, export unicode names as utf-8
  paths. This may not work perfectly on all platforms, but has the best
  chance of working in the common case. (John Arbash Meinel, #56815)

* When committing, only files that exist in working tree or basis tree
  may be specified (Aaron Bentley, #50793)

Portability
***********

* Fixes to run on Python 2.5 (Brian M. Carlson, Martin Pool, Marien Zwart)

Internals
*********

* TestCaseInTempDir now creates a separate directory for HOME, rather
  than having HOME set to the same location as the working directory.
  (John Arbash Meinel)

* ``run_bzr_subprocess()`` can take an optional ``env_changes={}`` parameter,
  which will update os.environ inside the spawned child. It also can
  take a ``universal_newlines=True``, which helps when checking the output
  of the command. (John Arbash Meinel)

* Refactor SFTP vendors to allow easier re-use when SSH is used.
  (Andrew Bennetts)

* ``Transport.list_dir()`` and ``Transport.iter_files_recursive()`` should always
  return urlescaped paths. This is now tested (there were bugs in a few
  of the transports) (Andrew Bennetts, David Allouche, John Arbash Meinel)

* New utility function ``symbol_versioning.deprecation_string``. Returns the
  formatted string for a callable, deprecation format pair. (Robert Collins)

* New TestCase helper applyDeprecated. This allows you to call a callable
  which is deprecated without it spewing to the screen, just by supplying
  the deprecation format string issued for it. (Robert Collins)

* Transport.append and Transport.put have been deprecated in favor of
  ``.append_bytes``, ``.append_file``, ``.put_bytes``, and
  ``.put_file``. This removes the ambiguity in what type of object the
  functions take.  ``Transport.non_atomic_put_{bytes,file}`` has also
  been added. Which works similarly to ``Transport.append()`` except for
  SFTP, it doesn't have a round trip when opening the file. Also, it
  provides functionality for creating a parent directory when trying
  to create a file, rather than raise NoSuchFile and forcing the
  caller to repeat their request.
  (John Arbash Meinel)

* WorkingTree has a new api ``unversion`` which allow the unversioning of
  entries by their file id. (Robert Collins)

* ``WorkingTree.pending_merges`` is deprecated.  Please use the
  ``get_parent_ids`` (introduced in 0.10) method instead. (Robert Collins)

* WorkingTree has a new ``lock_tree_write`` method which locks the branch for
  read rather than write. This is appropriate for actions which only need
  the branch data for reference rather than mutation. A new decorator
  ``needs_tree_write_lock`` is provided in the workingtree module. Like the
  ``needs_read_lock`` and ``needs_write_lock`` decorators this allows static
  declaration of the locking requirements of a function to ensure that
  a lock is taken out for casual scripts. (Robert Collins, #54107)

* All WorkingTree methods which write to the tree, but not to the branch
  have been converted to use ``needs_tree_write_lock`` rather than
  ``needs_write_lock``. Also converted is the revert, conflicts and tree
  transform modules. This provides a modest performance improvement on
  metadir style trees, due to the reduce lock-acquisition, and a more
  significant performance improvement on lightweight checkouts from
  remote branches, where trivial operations used to pay a significant
  penalty. It also provides the basis for allowing readonly checkouts.
  (Robert Collins)

* Special case importing the standard library 'copy' module. This shaves
  off 40ms of startup time, while retaining compatibility. See:
  ``bzrlib/inspect_for_copy.py`` for more details. (John Arbash Meinel)

* WorkingTree has a new parent class MutableTree which represents the
  specialisations of Tree which are able to be altered. (Robert Collins)

* New methods mkdir and ``put_file_bytes_non_atomic`` on MutableTree that
  mutate the tree and its contents. (Robert Collins)

* Transport behaviour at the root of the URL is now defined and tested.
  (Andrew Bennetts, Robert Collins)

Testing
*******

* New test helper classs MemoryTree. This is typically accessed via
  ``self.make_branch_and_memory_tree()`` in test cases. (Robert Collins)

* Add ``start_bzr_subprocess`` and ``stop_bzr_subprocess`` to allow test
  code to continue running concurrently with a subprocess of bzr.
  (Andrew Bennetts, Robert Collins)

* Add a new method ``Transport.get_smart_client()``. This is provided to
  allow upgrades to a richer interface than the VFS one provided by
  Transport. (Andrew Bennetts, Martin Pool)


..
   vim: tw=74 ft=rst ff=unix
