Comment 26 for bug 855155

Revision history for this message
Olivier Dony (Odoo) (odo-openerp) wrote :

It seems the problem can be reproduce consistently by uncommitting a commit that removes the last file(s) of a directory without removing the directory itself.

I managed to restore my WT to a working status (bzr stopped complaining about it being outdated) by doing a pull -r to the revision that I failed to uncommit, and I abandoned the idea of uncommitting it. I also completely lost the uncommitted changes that were in my WT at the time of the failed uncommit (luckily for me I'm a compulsive user of bzr diff, so they were in my terminal scrollback). It seems this could lead to serious data loss, right?

Here's how I easily reproduce it on Ubuntu 12.04 with bzr 2.5.1:

$ bzr init test
Created a standalone tree (format: 2a)
$ cd test
$ mkdir a
$ touch a/b a/c
$ bzr add
adding a
adding a/b
adding a/c
$ bzr ci -m 'added a/b and a/c'
Committing to: /tmp/test/
added a
added a/b
added a/c
Committed revision 1.
$ bzr rm a/*
deleted a/c
deleted a/b
t$ bzr ci -m 'removed b and c'
Committing to: /tmp/test/
deleted a/b
deleted a/c
Committed revision 2.
$ bzr uncommit
    2 Olivier Dony 2012-10-16
      removed b and c

The above revision(s) will be removed.
Uncommit these revisions? ([y]es, [n]o): yes
bzr: ERROR: An inconsistent delta was supplied involving 'a/b', 'b-20121016165704-khjvvmax9ab4jp8p-2'
reason: Unable to find block for this record. Was the parent added?