00909: Disallow null changes.
Description: Currently PmWiki will store history entries even when no change at all was made to a page. The history would then show nothing apart from the change message and the author.
No big deal - only the SPAMers found out. They now start to make such "null" changes (which current anti spam plugins won't object to) and place there SPAM inside the change message.
From email list 2007/06/19 7:50
PmWiki used to work exactly this way -- i.e., a post operation that didn't change the text would be ignored, such that there would be no entry in the page history or RecentChanges.
However, when we introduced pagelist indexes, it became important that saving a page would also regenerate its attributes (such as the targets= attribute) and any associated indexes, as well as perhaps record who was responsible for doing that. So, we no longer wanted to ignore such posts.
There were other complications that arose from ignoring "identical text" posts, which would often require explanation on the mailing list, along with suggestions to "add blank lines to the end of a page to get it to really save". It hasn't happened in such a long time that I've now forgotten exactly what the complications were, but I remember they were part of the reason for switching.
So, I don't think we can turn off same-text posts entirely. What we could potentially do, however, is change the code so that the page is still saved and attributes are generated, but no RecentChanges entry is made and an entry isn't made in the page history.
This does have the potential to introduce some confusion, because in such a case the $LastModifiedBy author might not be the same as the last author listed in the page history. Similarly, someone looking at the page history might note that the page's last modification time doesn't match the last entry in the page history (although this occurs already, e.g., when someone sets a password on a page).
Another possibility would be to allow the page history to record the empty entry in the page file, but not display empty page histories when ?action=diff is invoked. That keeps the record in pagehistory a bit more intact, without being annoying to others.
Personally, I think that if we just suppressed the updating of RecentChanges on same-text edits, then everything would probably work out okay. But I'm open for opinions here.