bzr 2.2b2


This is a somewhat early second beta of the 2.2 series, to fix a python2.4 incompatibility in the 2.2b1 release. It also includes a swag of performance, usability and correctness improvements: test feedback on all of these would be welcome.

New Features

  • bzr diff now supports a –format option, which can be used to select alternative diff formats. (Jelmer Vernooij, #555994)

Bug Fixes

  • bzr dpush, bzr push and bzr send will now issue a warning instead of failing when dirty trees are involved. The corresponding dpush_strict, push_strict and send_strict should be set to True explicitly to get the previous behaviour. (Vincent Ladeuil, #519319)
  • bzr export to tar file does not fail if any parent directory contains unicode characters. This works around upstream Python bug . (Parth Malwankar, #413406)
  • bzr switch does not die if a ConfigurableFileMerger is used. (Aaron Bentley, #559436)
  • bzr update when a pending merge in the working tree has been merged into the master branch will no longer claim that old commits have become pending merges. (Robert Collins, #562079)
  • bzrlib.mutabletree.MutableTree.commit will now support a passed in config as in previous versions of bzrlib. (Robert Collins)
  • Fix glitch in the warning about unclean trees display. (Vincent Ladeuil, #562665)
  • Fixed Python2.4 incompatibilities in the bzr2.2b1 source tarball. (Martin Pool)
  • Help messages generated by RegistryOption.from_kwargs list the switches in alphabetical order, rather than in an undefined order. (Martin von Gagern, #559409)
  • Make sure the ExecutablePath and InterpreterPath are set in Apport crash reports, to avoid “This problem report applies to a program which is not installed any more” error. (Martin Pool, James Westby, #528114)
  • Reset siginterrupt flag to False every time we handle a signal installed with set_signal_handler(..., restart_syscall=True) (from bzrlib.osutils. Reduces the likelihood of “Interrupted System Call” errors compared to registering signal.signal directly. (Andrew Bennetts)
  • When invoked with a range revision, bzr log doesn’t show revisions that are not part of the Y revisions ancestry anymore when invoked with -rX..Y. (Vincent Ladeuil, #474807)
  • Properly handle param_name attribute for ListOption. (Martin von Gagern, #387117)


  • bzr commit will prompt before using a commit message that was generated by a template and not edited by the user. (Robert Collins, #530265)
  • bzr diff read-locks the trees and branches only once, saving about 10-20ms on bzr diff in a tree. (Andrew Bennetts)
  • bzr missing read-locks the branches only once. (Andrew Bennetts)
  • bzr pull locks the branches and tree only once. (Andrew Bennetts)
  • Index lookups in pack repositories search recently hit pack files first. In repositories with many pack files this can greatly reduce the number of files accessed, the number of bytes read, and the number of read calls. An incremental pull via plain HTTP takes half the time and bytes for a moderately large repository. (Andrew Bennetts)
  • Index lookups only re-order the indexes when the hit files aren’t already first. Reduces the cost of reordering (John Arbash Meinel, #562429)
  • Less code is loaded at startup. (Cold-cache start time is about 10-20% less.) (Martin Pool, #553017)

API Changes

  • bzrlib.diff.get_trees_and_branches_to_diff is deprecated. Use get_trees_and_branches_to_diff_locked instead. (Andrew Bennetts)
  • TreeTransform.commit supports the full set of commit parameters, and auto-determines branch nick if not supplied. (Aaron Bentley)


  • bzrlib.commands.Command.run_direct is no longer needed - the pre 2.1 method of calling run() to perform testing or direct use via the API is now possible again. As part of this, the _operation attribute on Command is now transient and only exists for the duration of run(). (Robert Collins)

Table Of Contents

Previous topic

bzr 2.1.2

Next topic

bzr 2.2b1

This Page