bzr 0.12rc1

Bazaar

bzr 0.12rc1

Released:2006-10-23

Improvements

  • bzr log now shows dotted-decimal revision numbers for all revisions, rather than just showing a decimal revision number for revisions on the mainline. These revision numbers are not yet accepted as input into bzr commands such as log, diff etc. (Robert Collins)
  • revisions can now be specified using dotted-decimal revision numbers. For instance, bzr diff -r 1.2.1..1.2.3. (Robert Collins)
  • bzr help commands output is now shorter (Aaron Bentley)
  • bzr now uses lazy importing to reduce the startup time. This has a moderate effect on lots of actions, especially ones that have little to do. For example bzr rocks time is down to 116ms from 283ms. (John Arbash Meinel)
  • New Registry class to provide name-to-object registry-like support, for example for schemes where plugins can register new classes to do certain tasks (e.g. log formatters). Also provides lazy registration to allow modules to be loaded on request. (John Arbash Meinel, Adeodato Simó)

API Incompatability

  • LogFormatter subclasses show now expect the ‘revno’ parameter to show() to be a string rather than an int. (Robert Collins)

Internals

  • TestCase.run_bzr, run_bzr_captured, and run_bzr_subprocess can take a working_dir='foo' parameter, which will change directory for the command. (John Arbash Meinel)
  • bzrlib.lazy_regex.lazy_compile can be used to create a proxy around a regex, which defers compilation until first use. (John Arbash Meinel)
  • TestCase.run_bzr_subprocess defaults to supplying the --no-plugins parameter to ensure test reproducability, and avoid problems with system-wide installed plugins. (John Arbash Meinel)
  • Unique tree root ids are now supported. Newly created trees still use the common root id for compatibility with bzr versions before 0.12. (Aaron Bentley)
  • WorkingTree.set_root_id(None) is now deprecated. Please pass in inventory.ROOT_ID if you want the default root id value. (Robert Collins, John Arbash Meinel)
  • New method WorkingTree.flush() which will write the current memory inventory out to disk. At the same time, read_working_inventory will no longer trash the current tree inventory if it has been modified within the current lock, and the tree will now flush() automatically on unlock(). WorkingTree.set_root_id() has been updated to take advantage of this functionality. (Robert Collins, John Arbash Meinel)
  • bzrlib.tsort.merge_sorted now accepts generate_revnos. This parameter will cause it to add another column to its output, which contains the dotted-decimal revno for each revision, as a tuple. (Robert Collins)
  • LogFormatter.show_merge is deprecated in favour of LogFormatter.show_merge_revno. (Robert Collins)

Bug Fixes

  • Avoid circular imports by creating a deprecated function for bzrlib.tree.RevisionTree. Callers should have been using bzrlib.revisontree.RevisionTree anyway. (John Arbash Meinel, #66349)
  • Don’t use socket.MSG_WAITALL as it doesn’t exist on all platforms. (Martin Pool, #66356)
  • Don’t require Content-Type in range responses. Assume they are a single range if Content-Type does not exist. (John Arbash Meinel, #62473)
  • bzr branch/pull no longer complain about progress bar cleanup when interrupted during fetch. (Aaron Bentley, #54000)
  • WorkingTree.set_parent_trees() uses the trees to directly write the basis inventory, rather than going through the repository. This allows us to have 1 inventory read, and 2 inventory writes when committing a new tree. (John Arbash Meinel)
  • When reverting, files that are not locally modified that do not exist in the target are deleted, not just unversioned (Aaron Bentley)
  • When trying to acquire a lock, don’t fail immediately. Instead, try a few times (up to 1 hour) before timing out. Also, report why the lock is unavailable (John Arbash Meinel, #43521, #49556)
  • Leave HttpTransportBase daughter classes decides how they implement cloning. (Vincent Ladeuil, #61606)
  • diff3 does not indicate conflicts on clean merge. (Aaron Bentley)
  • If a commit fails, the commit message is stored in a file at the root of the tree for later commit. (Cheuksan Edward Wang, Stefan Metzmacher, #32054)

Testing

  • New test base class TestCaseWithMemoryTransport offers memory-only testing facilities: its not suitable for tests that need to mutate disk state, but most tests should not need that and should be converted to TestCaseWithMemoryTransport. (Robert Collins)
  • TestCase.make_branch_and_memory_tree now takes a format option to set the BzrDir, Repository and Branch formats of the created objects. (Robert Collins, John Arbash Meinel)