如何比较两个MediaWiki网站

时间:2018-12-24 18:48:46

标签: mediawiki

我们将私有MediaWiki站点移至了新服务器。几个月后,我们发现一两个用户继续更新旧的MediaWiki网站。因此,我们需要在旧服务器中进行一些修改,然后将其复制到新服务器中。

有人知道(方便吗?)比较和识别旧站点中的编辑的例程或过程吗?

根据该帖子的注释,如果“最近更改”页面接受了开始日期,则该页面可能会起作用。不幸的是,最多不能超过30天。在这种情况下,我需要审核12个月的更改。

1 个答案:

答案 0 :(得分:1)

确定已完成的编辑

识别并验证用户自分叉以来所做的编辑

使用数据库(假设MySQL)并且没有表前缀

请提供自2018年12月1日(包括该日期)以来所做的所有修改:

SELECT rev_id, rev_page, rev_text_id, rev_comment, rev_user, rev_user_text, rev_timestamp
FROM   revision
WHERE  rev_timestamp > '20181201';

请注意,实际页面文本存储在text表中,页面名称存储在page表中。

请提供自2018年12月1日(包括该日期)以来所做的所有修改,包括页面名称和修订文本:

SELECT rev_id, rev_page, page_namespace, page_title, rev_text_id, rev_comment, rev_user, rev_user_text, rev_timestamp, old_text
FROM revision r
LEFT JOIN page p
   ON p.page_id = r.rev_page
LEFT JOIN text t
   ON t.old_id = r.rev_text_id
WHERE rev_timestamp > '20181201';

请注意,使用MySQL Workbench之类的工具,您可以将结果复制为MySQL插入语句。根据用户对旧Wiki所做的操作,您可能只需要传输3个表的记录即可。但是,如果涉及文件上传,删除或用户权限更改,则情况将变得越来越复杂。您可以通过logging table跟踪这些更改。

使用Web界面

在过去30天内,当然可能会显示超过500个的更改。允许您配置的设置是$wgRCLinkLimits$wgRCLinkDays。您也可以只打开“最近更改”页面,点击30天并更改URL参数,以使URL变为path/to/index.php?title=Special:RecentChanges&days=90&limit=1500(最近90天内限制为1500)。

最近更改历史记录保留的时间长度取决于$wgRCMaxAge。目前为90天,但如果清除作业尚未删除较早的条目,则可能会很幸运。

可以不受限制地查看日志。在您的Wiki中访问Special:Log

使用API​​

list=allrevisions列出所有页面修订(即更改)。

它允许指定开始时间戳(arvstart)和继续。

示例:https://commons.wikimedia.org/w/api.php?action=query&list=allrevisions&arvlimit=1000

要查看删除,用户权限更改,上传......,请使用list=logevents

解决问题

使用数据库脚本(不要忘记之前进行备份),或者使用源Wiki中的Special:Export和Wiki中的Special:Import需要更新。

避免出现问题

为了将来迁移到新服务器$wgReadOnly,可能是您的朋友,通过将旧Wiki设为只读,可以避免出现此问题。

还有Extension:Sync,尽管我不确定它的功能。