bzr 1.18

Compatibility Breaks

  • Committing directly to a stacked branch from a lightweight checkout will no longer work. In previous versions this would appear to work but would generate repositories with insufficient data to create deltas, leading to later errors when branching or reading from the repository. (Robert Collins, bug #375013)

New Features

Bug Fixes

  • Fetching from 2a branches from a version-2 bzr protocol would fail to copy the internal inventory pages from the CHK store. This cannot happen in normal use as all 2a compatible clients and servers support the version-3 protocol, but it does cause test suite failures when testing downlevel protocol behaviour. (Robert Collins)
  • Fix a test failure on karmic by making a locale test more robust. (Vincent Ladeuil, #413514)
  • Fixed “Pack ... already exists” error when running bzr pack on a fully packed 2a repository. (Andrew Bennetts, #382463)
  • Further tweaks to handling of bzr add messages about ignored files. (Jason Spashett, #76616)
  • Properly handle fetching into a stacked branch while converting the data, especially when there are also ghosts. The code was filling in parent inventories incorrectly, and also not handling when one of the parents was a ghost. (John Arbash Meinel, #402778, #412198)
  • RemoteStreamSource.get_stream_for_missing_keys will fetch CHK inventory pages when appropriate (by falling back to the vfs stream source). (Andrew Bennetts, #406686)
  • StreamSource generates rich roots from non-rich root sources correctly now. (Andrew Bennetts, #368921)
  • When deciding whether a repository was compatible for upgrading or fetching, we previously incorrectly checked the default repository format for the bzrdir format, rather than the format that was actually present on disk. (Martin Pool, #408824)


  • A better description of the platform is shown in crash tracebacks, bzr --version and bzr selftest. (Martin Pool, #409137)
  • Cross-format fetches (such as between 1.9-rich-root and 2a) via the smart server are more efficient now. They send inventory deltas rather than full inventories. The smart server has two new requests, Repository.get_stream_1.19 and Repository.insert_stream_1.19 to support this. (Andrew Bennetts, #374738, #385826)
  • Extracting the full ancestry and computing the merge_sort is now significantly faster. This effects things like bzr log -n0. (For example, bzr log -r -10..-1 -n0 is 2.5s down to 1.0s. (John Arbash Meinel)


API Changes


  • -Dstrict_locks can now be used to check that read and write locks are treated properly w.r.t. exclusivity. (We don’t try to take an OS read lock on a file that we already have an OS write lock on.) This is now set by default for all tests, if you have a test which cannot be fixed, you can use self.thisFailsStrictLockCheck() as a compatibility knob. (John Arbash Meinel)
  • InterDifferingSerializer is now only used locally. Other fetches that would have used InterDifferingSerializer now use the more network friendly StreamSource, which now automatically does the same transformations as InterDifferingSerializer. (Andrew Bennetts)
  • KnownGraph now has a .topo_sort and .merge_sort member which are implemented in pyrex and significantly faster. This is exposed along with CombinedGraphIndex.find_ancestry() as VersionedFiles.get_known_graph_ancestry(keys). (John Arbash Meinel)
  • now honours ignore_fallbacks correctly on bzr-v2 protocols. (Robert Collins)
  • The index code now has some specialized routines to extract the full ancestry of a key in a more efficient manner. CombinedGraphIndex.find_ancestry(). (Time to get ancestry for drops from 1.5s down to 300ms. For OOo from 33s => 10.5s) (John Arbash Meinel)


  • Install the test ssl certificate and key so that installed bzr can run the https tests. (Denys Duchier, #392401)

Table Of Contents

Previous topic

bzr 1.18.1

Next topic

bzr 1.18rc1

This Page