bzr 1.16.1
End user testing of the 2a format revealed two serious bugs. The first,
#365615, caused bzr to raise AbsentContentFactory errors when autopacking.
This meant that commits or pushes to 2a-format repositories failed
intermittently.
The second bug, #390563, caused the smart server to raise AbsentContentFactory
when streaming 2a stacked 2a-format branches. This particularly affected
branches stored on Launchpad in the 2a format.
Both of these bugs cause command failures only, neither of them cause data
corruption or data loss. And, of course, both of these bugs are now fixed.
Bug Fixes
- We now properly request a more minimal set of file texts when fetching
multiple revisions. (Robert Collins, John Arbash Meinel, #390563)
- Repositories using CHK pages (which includes the new 2a format) will no
longer error during commit or push operations when an autopack operation
is triggered. (Robert Collins, #365615)
- chk_map.iter_interesting_nodes now properly uses the intersection
of referenced nodes rather than the union to determine what
uninteresting pages we still need to look at. Prior to this,
incrementally pushing to stacked branch would push the minimal data, but
fetching everything would request extra texts. There are some unhandled
cases wrt trees of different depths, but this fixes the common cases.
(Robert Collins, John Arbash Meinel, #390563)
- GroupCompress repositories now take advantage of the pack hints
parameter to permit cross-format fetching to incrementally pack the
converted data. (Robert Collins)
- Repository.commit_write_group now returns opaque data about what
was committed, for passing to the Repository.pack. Repositories
without atomic commits will still return None. (Robert Collins)
- Repository.pack now takes an optional hint parameter
which will support doing partial packs for repositories that can do
that. (Robert Collins)
- RepositoryFormat has a new attribute ‘pack_compresses’ which is True
when doing a pack operation changes the compression of content in the
repository. (Robert Collins)
- StreamSink and InterDifferingSerialiser will call
Repository.pack with the hint returned by
Repository.commit_write_group if the formats were different and the
repository can increase compression by doing a pack operation.
(Robert Collins, #376748)