bzr 1.18
Bazaar
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)
Improvements
- 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 bzr.dev is 2.5s down to 1.0s.
(John Arbash Meinel)
Documentation
API Changes
Internals
- -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)
- RemoteBranch.open 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
bzr.dev drops from 1.5s down to 300ms. For OOo from 33s => 10.5s) (John
Arbash Meinel)
Testing
- Install the test ssl certificate and key so that installed bzr
can run the https tests. (Denys Duchier, #392401)