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?
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. 04-khjvvmax9ab4 jp8p-2'
Uncommit these revisions? ([y]es, [n]o): yes
bzr: ERROR: An inconsistent delta was supplied involving 'a/b', 'b-201210161657
reason: Unable to find block for this record. Was the parent added?