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

.. toctree::
   :maxdepth: 1


bzr 1.13
########

:Codename: paraskavedekatriaphobia
:1.13: 2009-03-14
:1.13rc1: 2009-03-10
:1.13.1: 2009-03-23
:1.13.2: 2009-04-27

GNU Changelog output can now be produced by ``bzr log --gnu-changelog``.  Debug
flags can now be set in ``~/.bazaar/bazaar.conf``.  Lightweight checkouts and
stacked branches should both be much faster over remote connections.  

Changes From 1.13.1 to 1.13.2
*****************************

A regression was found in the 1.13.1 release. When bzr 1.13.1 and earlier push
a stacked branch they do not take care to push all the parent inventories for
the transferred revisions. This means that a smart server serving that branch
often cannot calculate inventory deltas for the branch (because smart server
does not/cannot open fallback repositories). Prior to 1.13 the server did not
have a verb to stream revisions out of a repository, so that's why this bug has
appeared now.

Bug Fixes
*********

* Fix for bug 354036 ErrorFromSmartServer - AbsentContentFactory object has no
  attribute 'get_bytes_as' exception while pulling from Launchpad 
  (Jean-Francois Roy, Andrew Bennetts, Robert Collins)

Changes From 1.13final to 1.13.1
********************************

A couple regessions where found in the 1.13 release. The pyrex-generated C
extensions are missing from the .tar.gz and .zip files.  Documentation on how
to generate GNU ChangeLogs is wrong.

Bug Fixes
*********

* Change ``./bzr``'s ``_script_version`` to match ./bzrlib/__init__.py
  version_info. (Bob Tanner, Martin Pool, #345232)

* Distribution archives for 1.13 do not contain generated C extension modules
  (Jean-Francois Roy, Bob Tanner, #344465)

* GNU ChangeLog output can now be produced by bzr log --format gnu-changelog is
  incorrect (Deejay, Bob Tanner, Martin Pool, Robert Collins, #343928)

* ``merge --force`` works again. (Robert Collins, #342105)

Changes From 1.13rc1 to 1.13final
*********************************

* Fix "is not a stackable format" error when pushing a
  stackable-format branch with an unstackable-format repository to a
  destination with a default stacking policy.  (Andrew Bennetts)

* Progress bars now show the rate of network activity for
  ``bzr+ssh://`` and ``bzr://`` connections.  (Andrew Bennetts)

Compatibility Breaks
********************

* ``bzr log --line`` now indicates which revisions are merges with
  `[merge]` after the date.  Scripts which parse the output of this
  command may need to be adjusted.
  (Neil Martinsen-Burrell)

New Features
************

* ``bzr reconfigure`` now supports --with-trees and --with-no-trees
  options to change the default tree-creation policy of shared
  repositories.  (Matthew Fuller, Marius Kruger, #145033)

* Debug flags can now be set in ``~/.bazaar/bazaar.conf``.
  (Martin Pool)

* Filtered views provide a mask over the tree so that users can focus
  on a subset of a tree when doing their work. See ``Filtered views``
  in chapter 7 of the User Guide and ``bzr help view`` for details.
  (Ian Clatworthy)

* GNU Changelog output can now be produced by ``bzr log --gnu-changelog``.
  (Andrea Bolognani, Martin Pool)

* The ``-Dmemory`` flag now gives memory information on Windows.
  (John Arbash Meinel)

* Multiple authors for a commit can now be recorded by using the "--author"
  option multiple times. (James Westby, #185772)

* New clean-tree command, from bzrtools.  (Aaron Bentley, Jelmer Vernooij)

* New command ``bzr launchpad-open`` opens a Launchpad web page for that
  branch in your web browser, as long as the branch is on Launchpad at all.
  (Jonathan Lange)

* New API for getting bugs fixed by a revision: Revision.iter_bugs().
  (Jonathan Lange)

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

* All bzr ``Hooks`` classes are now registered in
  ``bzrlib.hooks.known_hooks``. This removes the separate list from
  ``bzrlib.tests`` and ensures that all hooks registered there are
  correctly isolated by the test suite (previously
  ``MutableTreeHooks`` were not being isolated correctly). Further, 
  documentation for hooks is now dynamically generated from the
  present HookPoints. ``bzr hooks`` will now also report on all the
  hooks present in the ``bzrlib.hooks.known_hooks`` registry.
  (Robert Collins)

* ``bzr add`` no longer prints ``add completed`` on success. Failure
  still prints an error message. (Robert Collins)

* ``bzr branch`` now has a ``--no-tree`` option which turns off the
  generation of a working tree in the new branch.
  (Daniel Watkins, John Klinger, #273993)

* Bazaar will now point out ``bzr+ssh://`` to the user when they 
  use ssh://. (Jelmer Vernooij, #330535)

* ``bzr -v info`` now omits the number of committers branch statistic,
  making it many times faster for large projects. To include that
  statistic in the output, use ``bzr -vv info``.
  (Ian Clatworthy)

* ``bzr push`` to a ``bzr`` url (``bzr://``, ``bzr+ssh://`` etc) will
  stream if the server is version 1.13 or greater, reducing roundtrips
  significantly. (Andrew Bennetts, Robert Collins)

* Lightweight Checkouts and Stacked Branches should both be much
  faster over remote connections. Building the working tree now
  batches up requests into approx 5MB requests, rather than a separate
  request for each file. (John Arbash Meinel)

* Support for GSSAPI authentication when using HTTP or HTTPS. 
  (Jelmer Vernooij)

* The ``bzr shelve`` prompt now includes a '?' help option to explain the
  short options better. (Daniel Watkins, #327429)

* ``bzr lp-open`` now falls back to the push location if it cannot find a
  public location. (Jonathan Lange, #332372)

* ``bzr lp-open`` will try to find the Launchpad URL for the location
  passed on the command line. This makes ``bzr lp-open lp:foo`` work as
  expected. (Jonathan Lange, #332705)

* ``bzr send`` now supports MH-E via ``emacsclient``. (Eric Gillespie)

Bug Fixes
*********

* Allows ``bzr log <FILE>`` to be called in an empty branch without
  backtracing. (Vincent Ladeuil, #346431)

* Bazaar now gives a better message including the filename if it's
  unable to read a file in the working directory, for example because
  of a permission error.  (Martin Pool, #338653)

* ``bzr cat -r<old> <path>`` doesn't traceback anymore when <path> has a
  file id in the working tree different from the one in revision <old>.
  (Vincent Ladeuil, #341517, #253806)

* ``bzr send`` help is more specific about how to apply merge
  directives.  (Neil Martinsen-Burrell, #253470)

* ``bzr missing`` now uses ``Repository.get_revision_delta()`` rather
  than fetching trees and determining a delta itself. (Jelmer
  Vernooij, #315048)

* ``bzr push`` to a smart server no longer causes "Revision
  {set([('null:',)])} not present ..." errors when the branch has
  multiple root revisions. (Andrew Bennetts, #317654)

* ``bzr shelve`` now properly handle patches with no terminating newline.
  (Benoît PIERRE, #303569)

* ``bzr unshelve`` gives a more palatable error if passed a non-integer
  shelf id. (Daniel Watkins)

* Export now handles files that are not present in the tree.
  (James Westby, #174539)

* Fixed incorrect "Source format does not support stacking" warning
  when pushing to a smart server.  (Andrew Bennetts, #334114)
  
* Fixed "sprout() got an unexpected keyword argument 'source_branch'"
  error branching from old repositories.
  (Martin Pool, #321695)

* Make ``bzr push --quiet <non-local location>`` less chatty.
  (Kent Gibson, #221461)

* Many Branch hooks would not fire with ``bzr://`` and ``bzr+ssh://``
  branches, and this was not noticed due to a bug in the test logic
  for branches. This is now fixed and a test added to prevent it
  reoccuring. (Robert Collins, Andrew Bennetts)

* Restore the progress bar on Windows. We were disabling it when TERM
  wasn't set, but Windows doesn't set TERM. (Alexander Belchenko,
  #334808)

* ``setup.py build_ext`` now gives a proper error when an extension
  fails to build. (John Arbash Meinel)

* Symlinks to non ascii file names are now supported.
  (Robert Collins, Vincent Ladeuil, #339055, #272444)    

* Under rare circumstances (aka nobody reported a bug about it), the FTP
  transport could revert to ascii mode. It now stays in binary mode except
  when needed.  (Vincent Ladeuil)

* Unshelve does not generate warnings about progress bars.
  (Aaron Bentley, #328148)

* shelve cleans up properly when unversioned files are specified.
  (Benoît Pierre, Aaron Bentley)

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

* Added ``Organizing your workspace`` to the User Guide appendices,
  summarizing some common ways of organizing trees, branches and
  repositories and the processes/workflows implied/enabled by each.
  (Ian Clatworthy)

* Hooks can now be self documenting. ``bzrlib.hooks.Hooks.create_hook``
  is the entry point for this feature. (Robert Collins)

* The documentation for ``shelve`` and ``unshelve`` has been clarified.
  (Daniel Watkins, #327421, #327425)

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

* ``bzr selftest`` now fails if the bazaar sources contain trailing
  whitespace, non-unix style line endings and files not ending in a
  newline. About 372 files and 3243 lines with trailing whitespace was
  updated to comply with this. The code already complied with the other
  criteria, but now it is enforced. (Marius Kruger)

* ``bzrlib.branch.PushResult`` was renamed to 
  ``bzrlib.branch.BranchPushResult``. (Jelmer Vernooij)

* ``Branch.fetch`` and ``Repository.fetch`` now return None rather
  than a count of copied revisions and failed revisions. A while back
  we stopped ever reporting failed revisions because we started
  erroring instead, and the copied revisions count is not used in the
  UI at all - indeed it only reflects the repository status not
  changes to the branch itself. (Robert Collins)

* ``Inventory.apply_delta`` now raises an AssertionError if a file-id
  appears multiple times within the delta. (Ian Clatworthy)

* MutableTree.commit now favours the "authors" argument, with the old
  "author" argument being deprecated.

* Remove deprecated EmptyTree.  (Martin Pool)

* ``Repository.fetch`` now accepts an optional ``fetch_spec``
  parameter.  A ``SearchResult`` or ``MiniSearchResult`` may be passed
  to ``fetch_spec`` instead of a ``last_revision`` to specify exactly
  which revisions to fetch. (Andrew Bennetts)

* ``RepositoryAcquisitionPolicy.acquire_repository`` now returns a
  tuple of ``(repository, is_new_flag)``, rather than just the
  repository.  (Andrew Bennetts)

* Revision.get_apparent_author() is now deprecated, replaced by
  Revision.get_apparent_authors(), which returns a list. The former
  now returns the first item that would be returned from the second.

* The ``BranchBuilder`` test helper now accepts a ``timestamp``
  parameter to ``build_commit`` and ``build_snapshot``.  (Martin Pool)

* The ``_fetch_*`` attributes on ``Repository`` are now on
  ``RepositoryFormat``, more accurately reflecting their intent (they
  describe a disk format capability, not state of a particular
  repository of that format). (Robert Collins)

Internals
*********

* Branching from a non-stacked branch on a smart protocol is now
  free of virtual file system methods.
  (Robert Collins, Andrew Bennetts)

* Branch and Repository creation on a bzr+ssh://server are now done
  via RPC calls rather than VFS calls, reducing round trips for
  pushing new branches substantially. (Robert Collins)

* ``Branch.clone`` now takes the ``repository_policy`` formerly used
  inside ``BzrDir.clone_on_transport``, allowing stacking to be
  configured before the branch tags and revision tip are set. This
  fixes a race condition cloning stacked branches that would cause
  plugins to have hooks called on non-stacked instances.
  (Robert Collins, #334187)

* ``BzrDir.cloning_metadir`` now has a RPC call. (Robert Collins)

* ``BzrDirFormat.__str__`` now uses the human readable description
  rather than the sometimes-absent disk label. (Robert Collins)

* ``bzrlib.fetch`` is now composed of a sender and a sink component
  allowing for decoupling over a network connection. Fetching from
  or into a RemoteRepository with a 1.13 server will use this to
  stream the operation.
  (Andrew Bennetts, Robert Collins)

* ``bzrlib.tests.run_suite`` accepts a runner_class parameter
  supporting the use of different runners. (Robert Collins)

* Change how file_ids and revision_ids are interned as part of
  inventory deserialization. Now we use the real ``intern()``, rather
  than our own workaround that would also cache a Unicode copy of the
  string, and never emptied the cache. This should slightly reduce
  memory consumption. (John Arbash Meinel)

* New branch method ``create_clone_on_transport`` that returns a
  branch object. (Robert Collins)

* New hook Commands['extend_command'] to allow plugins to access a
  command object before the command is run (or help generated from
  it), without overriding the command. (Robert Collins)

* New version of the ``BzrDir.find_repository`` verb supporting
  ``_network_name`` to support removing more _ensure_real calls.
  (Robert Collins)

* ``RemoteBranchFormat`` no longer claims to have a disk format string.
  (Robert Collins)

* ``Repository`` objects now have ``suspend_write_group`` and
  ``resume_write_group`` methods.  These are currently only useful
  with pack repositories. (Andrew Bennetts, Robert Collins)

* ``BzrDirFormat``, ``BranchFormat`` and ``RepositoryFormat`` objects
  now have a ``network_name`` for passing the format across RPC calls.
  (Robert Collins, Andrew Bennetts)

* ``RepositoryFormat`` objects now all have a new attribute
  ``_serializer`` used by fetch when reserialising is required.
  (Robert Collins, Andrew Bennetts)

* Some methods have been pulled up from ``BzrBranch`` to ``Branch``
  to aid branch types that are not bzr branch objects (like
  RemoteBranch). (Robert Collins, Andrew Bennetts)

* Test adaptation has been made consistent throughout the built in
  tests. ``TestScenarioApplier``, ``multiply_tests_from_modules``,
  ``adapt_tests``, ``adapt_modules`` have all been deleted. Please
  use ``multiply_tests``, or for lower level needs ``apply_scenarios``
  and ``apply_scenario``. (Robert Collins)

* ``TestSkipped`` is now detected by TestCase and passed to the
  ``TestResult`` by calling ``addSkip``. For older TestResult objects,
  where ``addSkip`` is not available, ``addError`` is still called.
  This permits test filtering in subunit to strip out skipped tests
  resulting in a faster fix-shrink-list-run cycle. This is compatible
  with the testtools protocol for skips. (Robert Collins)

* The ``_index`` of ``KnitVersionedFiles`` now supports the ability
  to scan an underlying index that is going to be incorporated into
  the ``KnitVersionedFiles`` object, to determine if it has missing
  delta references. The method is ``scan_unvalidated_index``.
  (Andrew Bennetts, Robert Collins)

* There is a RemoteSink object which handles pushing to smart servers.
  (Andrew Bennetts, Robert Collins)

* ``TransportTraceDecorator`` now logs ``put_bytes_non_atomic`` and
  ``rmdir`` calls. (Robert Collins)

* ``VersionedFiles`` record adapters have had their signature change
  from ``(record, record.get_bytes_as(record.storage_kind))`` to
  ``(record)`` reducing excess duplication and allowing adapters
  to access private data in record to obtain content more
  efficiently. (Robert Collins)

* We no longer probe to see if we should create a working tree during
  clone if we cannot get a local_abspath for the new bzrdir.
  (Robert Collins)


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