If you tell bzr about the delete before hand it does fine (replace the rm sub/b with bzr rm sub/b).
It appears to be an interaction between the auto-unversion code and the apply delta code. It certainly does seem related to bug #187169.
The code path is slighty different, though. Specifically, we are getting a case where the code is claiming "this file is really deleted" but the record on disk claims that it was still present (which is why 'bzr rm sub/b' works, because it records it as genuinely removed.)
I'm guessing the WT.unversion() call isn't marking all references as absent, but I'll try to look into it a bit more.
If you tell bzr about the delete before hand it does fine (replace the rm sub/b with bzr rm sub/b).
It appears to be an interaction between the auto-unversion code and the apply delta code. It certainly does seem related to bug #187169.
The code path is slighty different, though. Specifically, we are getting a case where the code is claiming "this file is really deleted" but the record on disk claims that it was still present (which is why 'bzr rm sub/b' works, because it records it as genuinely removed.)
I'm guessing the WT.unversion() call isn't marking all references as absent, but I'll try to look into it a bit more.