[pmwiki-users] RFC: Drafts history bug

Petko Yotov 5ko at 5ko.fr
Wed Jul 10 09:15:00 CDT 2013


Sorry if the message is a little technical, please ignore it if it doesn't  
concern you.

A user has demonstrated a bug [1][2] when a page is modified and saved as  
draft, then modified and published, then reverted to the pre-draft version:  
the restore is incorrect, wrong lines are restored and duplicated, good  
lines are missing.

The problem appears because when a "draft" is "published", the diff is  
created not between the previous version of the "draft" and the posted text  
(A), but between the previous version of the "published" page and the posted  
text (B), while the page history contains diffs from the draft versions (and  
not from the published versions).

Because of this, restoring from a previous version other than the very last  
one, in some cases is incorrect.

At the moment in the Subversion pre-release I have commented out a line  
where PmWiki switches the old version of the draft page with the public  
page. (In scripts/draft.php, line 59 commented out.)

With the current solution (A), it appears really fixed but I'm still  
searching for any potential negative side effects (I don't see any but I  
wonder why it was done this way in the past). This solution keeps  
information in the page history for the authors of the changes, including  
the draft changes.

There is another possible solution: (B) done correctly, slightly more complex  
to implement: discard all edit history from the draft page and only store  
the diff between the published page and the posted text, keeping only the  
history of the published versions. This will not break the restore mecanism.  
OTOH, this will lose information about authors of intrermediate edits and  
one can wonder if it is ethical.

My questions are:

1. Does anyone see a problem with the current solution (A) ?

2. Should we go with (A) or (B) ? Or something else?

Thanks,
Petko

[1] http://www.pmwiki.org/wiki/Test/DraftRestore
[2] http://www.pmwiki.org/wiki/PITS/01007




More information about the pmwiki-users mailing list