https://bugzilla.wikimedia.org/show_bug.cgi?id=39836

Daniel Kinzler <daniel.kinz...@wikimedia.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |daniel.kinz...@wikimedia.de

--- Comment #3 from Daniel Kinzler <daniel.kinz...@wikimedia.de> 2012-11-10 
11:59:55 UTC ---
Implemented in I344d7681 as follows:

* 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
Wikibugs-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l

Reply via email to