bzr 0.17rc1 2007-06-12 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)