NOTES WHEN UPGRADING:
* The kind() and is_executable() APIs on the WorkingTree interface no
longer implicitly (read) locks and unlocks the tree. This *might*
impact some plug-ins and tools using this part of the API. If you find
an issue that may be caused by this change, please let us know,
particularly the plug-in/tool maintainer. If encountered, the API
fix is to surround kind() and is_executable() calls with lock_read()
and unlock() like so::
work_tree.lock_read()
try:
kind = work_tree.kind(...)
finally:
work_tree.unlock()
IMPROVEMENTS:
* There are two new help topics, working-trees and repositories that
attempt to explain these concepts. (James Westby, John Arbash Meinel,
Aaron Bentley)
* Added ``bzr log --limit`` to report a limited number of revisions.
(Kent Gibson, #3659)
* Revert does not try to preserve file contents that were originally
produced by reverting to a historical revision. (Aaron Bentley)
* ``bzr log --short`` now includes ``[merge]`` for revisions which
have more than one parent. This is a small improvement to help
understanding what changes have occurred
(John Arbash Meinel, #83887)
* TreeTransform avoids many renames when contructing large trees,
improving speed. 3.25x speedups have been observed for construction of
kernel-sized-trees, and checkouts are 1.28x faster. (Aaron Bentley)
* Commit on large trees is now faster. In my environment, a commit of
a small change to the Mozilla tree (55k files) has dropped from
66 seconds to 32 seconds. For a small tree of 600 files, commit of a
small change is 33% faster. (Ian Clatworthy)
* Clean up the ``WorkingTree4._iter_changes()`` internal loops as well as
``DirState.update_entry()``. This optimizes the core logic for ``bzr
diff`` and ``bzr status`` significantly improving the speed of
both. (John Arbash Meinel)
* The tutorial has been improved. (Matthew Fuller)
* Better error message for selected file commit of merges. (Aaron Bentley)
* Updated bash completion. (Antonin 'gree' Komenda)
BUGFIXES:
* ``bzr push`` should only connect to the remote location one time.
We have been connecting 3 times because we forget to pass around
the Transport object. This adds ``BzrDir.clone_on_transport()``, so
that we can pass in the Transport that we already have.
(John Arbash Meinel, #75721)
* ``DirState.set_state_from_inventory()`` needs to properly order
based on split paths, not just string paths.
(John Arbash Meinel, #115947)
* Let TestUIFactoy encode the password prompt with its own stdout.
(Vincent Ladeuil, #110204)
* pycurl should take use the range header that takes the range hint
into account.
(Vincent Ladeuil, #112719)
* WorkingTree4.get_file_sha1 no longer raises an exception when invoked
on a missing file. (Aaron Bentley, #118186)
* WorkingTree.remove works correctly with tree references, and when pwd is
not the tree root. (Aaron Bentley)
* Merge no longer fails when a file is renamed in one tree and deleted
in the other. (Aaron Bentley, #110279)
* ``revision-info`` now accepts dotted revnos, doesn't require a tree,
and defaults to the last revision (Matthew Fuller, #90048)
* Tests no longer fail when BZR_REMOTE_PATH is set in the environment.
(Daniel Watkins, #111958)
* ``bzr branch -r revid:foo`` can be used to branch any revision in
your repository. (Previously Branch6 only supported revisions in your
mainline). (John Arbash Meinel, #115343)
* 'branch lp:projname' now creates ./projname as expected.
INTERNALS:
* Rework of LogFormatter API to provide beginning/end of log hooks and to
encapsulate the details of the revision to be logged in a LogRevision
object.
In long log formats, merge revision ids are only shown when --show-ids
is specified, and are labelled "revision-id:", as per mainline
revisions, instead of "merged:". (Kent Gibson)
* New ``BranchBuilder`` API which allows the construction of particular
histories quickly. Useful for testing and potentially other applications
too. (Robert Collins)