stacking progress

Robert Collins robertc at
Wed May 7 01:55:23 BST 2008

I thought I'd give an update on this, so it doesn't seem like I've just
disappeared off into thin air ;).

Stacking can be broken up into a few major components:
 - a branch format that can hold a stacking pointer
 - a repository format that can have per file graphs and compression
   parents referencing remote repositories
 - UI code and various glue logic to tie these together.
 - performance tuning to make this work well

The first three are essentially done - they are present in my stacked
branch and operate quite well with some caveats:
 - the repository format of stacker and stackee must be an exact match
 - bzr:// family url's are not supported (and neither is http with
   auto-detected bzr://).

Fixing these caveats requires teaching the internals of pack
repositories about an abstract interface for accessing texts from other

To achieve high performance though, we need to eliminate the 'one round
trip per file id' that tree operations currently use; in particular
checkout and merge operations.

There is a suitable API for this on Tree, but it is not available deeper
down the stack - VersionedFile enforces a one round trip per fileid
interface; and the existing streaming interface requires up-front
knowledge of the compression tree to decide what to retrieve, if you
want to avoid it that way - and that up front knowledge will be
obtained...via single index queries.

Rather than teach the internals of packs how to access data via the
current interface, which we have to fix to have good performance, I
chose to fix the interface, which will help us get better performance as
well as ensuring that when the repository format exact-match constraint
is relaxed we're able to handle network latency better.

The VersionedFiles project is the one to address the interface, and it
is coming along well, nearly all the api cleanups to prepare for it have
been merged, and I've just about finished the first major method in the
new api - add_lines. As part of this I now have integration tests for
the pack utilising back ends, which is a great comfort :)

GPG key available at: <>.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : 

More information about the bazaar mailing list