https://bugzilla.wikimedia.org/show_bug.cgi?id=38664
--- Comment #10 from Daniel Kinzler <[email protected]> 2012-11-08 18:21:55 UTC --- I'm poking at this now. Here is what I intend to do: * modifications must always be based on the revision that is indicated as the base revision. I.e. if ApiModifyEntity gets a baserevid parameter, it must loat that version of the entity, and then modify that, not the current revision. * If the current revision is the base revsision, or there is no base revision, then just save the new content as is (no conflict). * Otherwise, EditPage creates a patch by generating a diff from the base content to the new content (the content provided by the caller). * Then, a "clean" patch is generated by removing all changes from the patch that conflict with (are not applicable to) the current revision. * If the clean patch is different from the original patch, there is a conflict. * If there is a conflict but the current user was the only one to edit since the base revision, the conflict is ignored. Otherwise, saving is aborted. * If saving was not aborted, we now have either a clean patch, or a patch with conflicts against the user's own edits. * Apply that path to the current revision to get a fresh version of the new content which has all the intended changes performed on top of the current revision instead of the base revision. (in git terms, this is a rebase). This should get us a clean result. -- Configure bugmail: https://bugzilla.wikimedia.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. _______________________________________________ Wikibugs-l mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/wikibugs-l
