Sat, May 30
Maybe another option is to allow multiple -d arguments for this case? Something like hg rebase -r C -d B -d D. I haven't thought through BC, but I think that's what I'd prefer if we were writing rebase from scratch. I know we can't support hg rebase -r C -d 'B + D' for backward-compatibility reasons (because we already support that -- it rebases to the highest revnum in the set).
Well, I attempted to rewrite @. But somehow the empty changeset got published before that push completed. So it is forever part of history now :/
It looks like hg phabread | hg import - produced an empty changeset, which I accidentally pushed. I have since rewritten @ on hg-committed to remove the empty changeset. This differential revision should be reopened (which I cannot do since I don't own it).
This patch currently fails to apply.
Fri, May 29
This is not meant for review; I'm sending it now in case it'll be useful for @durin42's work on merge-diffs. I also included the rest of the stack to explain why I wrote the code.
Thu, May 28
This is now much closer! I'm down to a handful of failures, all like this: