Assertion error in delta.py (_compare_trees)

Marius Gedminas marius at pov.lt
Thu Mar 1 19:53:49 GMT 2007


On Thu, Mar 01, 2007 at 11:56:26AM -0600, John Arbash Meinel wrote:
> Marius Gedminas wrote:
> > On Thu, Mar 01, 2007 at 02:24:51AM +0200, Marius Gedminas wrote:
> > ...
> >>   File "/home/mg/src/bzr.dev/bzrlib/inventory.py", line 212, in find_previous_heads
> >>     assert candidates[ie.revision] == ie
> >> AssertionError
> > 
> > Any ideas?  I'm kind of sitting here not knowing whether my existing
> > branches are broken and whether I should start from scratch (I have
> > cumulative diffs of all my changes, so I'd just lose some history).
> 
> Well, I'm not sure what is causing this problem. My best guess is that
> you have one branch which thinks things should be a symlink, and another
> which thinks they should be a file. But somehow they both have the same
> 'last-changed' revision. It seems like this shouldn't be possible, since
> one of them should have a new last-changed when the file changed to a
> symlink.
> 
> Are these branches public?

They are, now: http://mg.pov.lt/fbreader/tmp/

Short history (I hope I remember it correctly):

  upstream: apparently I changed some symlinks to files in this
    branch, then comitted, but bzr (whichever version it was) ignored and
    did not commit those changes.

  toc-marks: branched from upstream, committed some changes on top

  upstream: committed the file type changes with bzr 0.15.0dev0

At this point I can cd into toc-marks and bzr merge ../upstream, but
after that I cannot bzr commit (with the informative patch you
suggested):

  File "/home/mg/src/bzr.dev/bzrlib/inventory.py", line 212, in find_previous_heads
    assert candidates[ie.revision] == ie, (
  AssertionError: Mismatch between inventory records:
    InventoryLink('opensimpad0.9.0-20060809170006-33d4eedf9209ebe4',
                  'opensimpad-0.9.0',
                  parent_id='fbreader-20060809170005-4a41fd90830b9428',
                  revision='mgedmin at b4net.lt-20060809170036-438b9093426de34f') !=
    InventoryDirectory('opensimpad0.9.0-20060809170006-33d4eedf9209ebe4',
                       'opensimpad-0.9.0',
                       parent_id='fbreader-20060809170005-4a41fd90830b9428',
                       revision='mgedmin at b4net.lt-20060809170036-438b9093426de34f')

(You can ignore the other branches for now, although I first saw the
problem when I tried to bzr merge toc-marks into the mg branch and then
commit it.)

> If we can figure out why it is so unhappy, we can try to figure out the
> easiest way to fix it.
> 
> One possibility is to just do "bzr rm $file; bzr add $file" for all of
> the files that changed kind. That should prevent this assert from
> triggering. Even if it isn't the "best" fix.
> 
> But it would be nice to be able to reproduce an error like this, so that
> we can write up a test case, and fix it so it doesn't happen again.

I can reproduce it with this shell script.  It requires that you have
both bzr 0.11 and 0.15 somewhere (change the alias definitions)

    #!/bin/sh
    alias bzr11=/usr/bin/bzr
    alias bzr15=~/src/bzr.dev/bzr
    set -x
    mkdir -p branch1
    bzr11 init branch1
    ln -s missing branch1/file1
    bzr11 add branch1/file1
    bzr11 ci branch1 -m "Add a symlink"
    rm branch1/file1
    mkdir branch1/file1
    bzr11 ci branch1 -m "Try to convert a symlink to a directory" # <-- fails
    bzr11 branch branch1 branch2
    bzr15 ci branch1 -m "Convert a symlink to a directory"
    (cd branch2 && bzr15 merge ../branch1)
    bzr15 ci branch2 -m "Merge branch1" # <-- fails with AssertionError

BTW if I comment out the "bzr11 ci branch1 -m "Try to..."" line, I get the same
error.

HTH,
Marius Gedminas
-- 
Give a man a computer program and you give him a headache, but teach him to
program computers and you give him the power to create headaches for others for
the rest of his life...
        -- R. B. Forest
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20070301/cf2996ac/attachment-0001.pgp 


More information about the bazaar mailing list