Hi all, First post to the list. I've got a bunch of questions, and I hope this is the right place to ask them.
I'm interested in the idea of wiki 'mirroring': updating a second wiki ('B') periodically with content from wiki A. (There's of course some discussion of this on the web, so I'm aware that there's been quite a bit of thinking on this already, but I couldn't quite find the solution I was looking for.)
A first stab at mirroring would be to do a Special:Export on the whole of A, and then do a Special:Import on B. But this becomes impractical for larger wikis: Ideally, I just want to update what needs updating.
The best way to do this would probably be something like list=recentchanges (going back to the date of last transfer). Of course this doesn't work, because recentchanges are are periodically purged, so cannot be used between arbitrary dates. The log doesn't seem to record edits (is this correct?), so this can't be used to get a list of changes between two arbitrary dates.
So, question 1: Is it possible to get a list of all changes (including edits) between two dates (in a single query)?
If one wanted the complete version history, then another way to do this would be to get all revisions since the last transfer made, i.e. something like: action=query&prop=revisions&revids=1450|1451|1452|...&rvprop=content (then transform xml to Special:Import format, and upload). Together with a query of the log, this would give you all changes.
But suppose the wiki is very active or you don't have much bandwidth or you simply don't want the whole version history, but just the latest versions (since the last transfer). The only way I can see is to do something like this:
- 1. Fetch the list of namespaces - 2. Get the list of revisions in each namespace (action=query&prop=revisions&generator=allpages for each namespace) - 3. See what needs updating, and then fetch all the changed pages.
Question 2: Can you see a better way of doing this? Also, why won't generator=allpages work across namespaces? (I guess there my be a reason why that isn't possible to do easily.)
One way would be to try something like:
action=query&prop=revisions&generator=allpages&rvstart=20090521000000 but this doesn't work.
So, my question 3: Do you know why this doesn't work? I assume there isn't an efficient mysql query to accomplish this, or are there other reasons?
Finally, I guess I am wondering whether there are people actively interested in discussing issues around wiki mirroring/synchronisation more. If so, what's the best mailing list for this?
Sorry, the post got a bit longer than I expected - thanks for considering this!
All the best, Bjoern