Last modified: 2014-02-02 19:39:20 UTC
This allows the following cool "editprotected" flow: 1. Requester puts the modified version of the requested page somewhere else (maybe a subpage of talk page). 2. Requester tells admins revision ids of the modified version and the original revision which the modified one is based on, possibly with a gadget. 3. An admin edits the page with &undoafter=<modified revid>&undo=<original revid>. 4. If there's a conflict, admins can check &diff=<modified revid>&oldid=<original revid> and manually apply that, or ask the requester to submit a new "patch". Actually existing code can work in this way, and it's only some sanity check which blocks that. Gerrit change #91943 is a demonstration of removal of that.
Change 91943 had a related patch set uploaded by Liangent: DO NOT MERGE https://gerrit.wikimedia.org/r/91943
Besides the check, "# If they got undoafter and undo round the wrong way, switch them" also needs to be removed. I'm not sure whether this is feasible, but &diff=&oldid= is not working in this way (to be smart and swap values when "needed", and IIRC it was working in this way).
Change 91943 merged by jenkins-bot: (bug 56184) Allow 3-way merge from arbitrary revisions https://gerrit.wikimedia.org/r/91943