Bundle larger than expected

Russ Brown pickscrape at gmail.com
Wed Oct 15 18:14:18 BST 2008

Hash: SHA1

Hi, I'm experiencing some unexpected behaviour, and would appreciate
some ideas as to what the problem might be (probably my understanding).

I have a collection of branches structured like this:

 / \
B   C

So branch A is the root, B and C are branches of A, and D is a branch of C.

I should probably note at this point that when I say things like
'against branch A' I mean issuing "bzr send path_to_A": hopefully I
understand the parameter correctly.

Branch C has been merged to branch B, and now I want to send a patch for
review containing the changes on branch D to be merged into B also. I am
surprised to find that a bzr send against branch A is considerably
smaller than a bzr send against branch B (1196K vs 724K).

I'm surprised because a merge to A would contain all changes on branch
C, while a merge to B shouldn't contain those since C has already been
merged to B.

Thinking about it further, I decided to try a bundle against branch C:
surely that would be the most concise of them all. But no, it is
actually still slightly larger than the bundle against A.

Could it have anything to do with criss-cross merges? I see that bzr
send doesn't allow things like --weave. Looking at the diffs between the
bundles, the one against B contains code that was previously merged from
branch X to B and then A earlier.

So I decided to try merging the bundles to branch B to see what
differences they made. The bundle generated against branch C required
- --weave, and produced the following diffstat summary:

176 files changed, 7651 insertions(+), 4021 deletions(-)

Attempting to merge the bundle against A actually gives me an error:

Performing cherrypick

bzr: ERROR: The file id "file_id_string" is not present in the tree
<Inventory (*really* long list of inventory data)>

I suppose that's another story :) Anything I can do to debug this a bit
in order to raise a useful bug on launchpad? (I'm running 1.7.1). I've
not actually seen it say that about cherrypick before.

Merging the large bundle against branch B also required --weave, and
resulted in the same diffstat summary as merging the bundle created
against C. So the results are consistent.

The error encountered apart, does the criss-cross explain the larger
bundle size, and is there anything that I can do to take the criss-cross
into account when creating the preview diff in the output from bzr send?

Thanks, and apologies for the lengthy and rambly nature of this email. :)

- --

Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org


More information about the bazaar mailing list