On 8/28/07, Jonathan Chayce Dickinson <[EMAIL PROTECTED]> wrote: > > The mediator takes all the diffs submitted since the revision that the > user was working on and offsets the newly submitted diff according to > those. e.g. (insert X bytes at Y bytes position) > > previous diff1: (insert 10 at 100) (insert 20 at 200) > previous diff2: (insert 6 at 10) (insert 5 at 150) > new diff3: (insert 10 at 180) (insert 20 at 500) > > Note: diff1 created revision 700, the original diff2 was made from a > file checked out from revision 690, but now it is relevant to revision > 700 i.e. what it turns out to be after the process below. > > So now the mediator knows where the new data must be placed/deleted/changed: > > after considering diff1: diff3 == (insert 10 at 190) (insert 20 at 530) > after considering diff2: diff3 == (insert 10 at 201) (insert 20 at 535) >
This is essentially what Abicollab does (http://uwog.net/~uwog/abiword/abicollab.pdf). It also treats the document as one long string. However, I think we can do better than that with XML documents. Joonas
