bzr 2.1.0
#########

:Codename: Strasbourg
:2.1.0: 2010-02-11

This release marks our second long-term-stable series. The Bazaar team
has decided that we will continue to make bugfix-only 2.0.x and 2.1.x
releases, along with 2.2 development releases. 

This is a fairly incremental update, focusing on polish and bugfixing.
There are no changes for supported disk formats. Key updates include
reduced memory consumption for many operations, a new per-file merge
hook, ignore patterns can now include '!' to exclude files, globbing
support for all commands on Windows, and support for addressing home
directories via ``bzr+ssh://host/~/`` syntax.

Users are encouraged to upgrade from the 2.0 stable series.

Bug Fixes
*********

* Don't require testtools to use sftp.
  (Vincent Ladeuil, #516183)

* Fix "AttributeError in Inter1and2Helper" during fetch.
  (Martin Pool, #513432)

* Ignore ``KeyError`` from ``remove_index`` during ``_abort_write_group``
  in a pack repository, which can happen harmlessly if the abort occurs during
  finishing the write group.  Also use ``bzrlib.cleanup`` so that any
  other errors that occur while aborting the individual packs won't be
  hidden by secondary failures when removing the corresponding indices.
  (Andrew Bennetts, #423015)
  
* Using the ``bzrlib.chk_map`` module from within multiple threads at the
  same time was broken due to race conditions with a module level page
  cache. This shows up as a KeyError in the ``bzrlib.lru_cache`` code with
  ``bzrlib.chk_map`` in the backtrace, and can be triggered without using
  the same high level objects such as ``bzrlib.repository.Repository``
  from different threads. chk_map now uses a thread local cache which may
  increase memory pressure on processes using threads.
  (Robert Collins, John Arbash Meinel, #514090)

* The new ``merge_file_content`` should now be ok with tests to avoid
  regressions.
  (Vincent Ladeuil, #515597)
  
Internals
*********

* Use ``bzrlib.cleanup`` rather than less robust ``try``/``finally``
  blocks in several places in ``bzrlib.merge``.  This avoids masking prior
  errors when errors like ``ImmortalPendingDeletion`` occur during cleanup
  in ``do_merge``.
  (Andrew Bennetts, #517275)

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

* The ``remove_index`` method of
  ``bzrlib.repofmt.pack_repo.AggregateIndex`` no longer takes a ``pack``
  argument.  This argument was always ignored.
  (Andrew Bennetts, #423015)

