質問: mediawikiページでの投稿に責任を持つ著者の行ごとの表示 ウィキペディアのページまたはmediawikiサイトの各行の「誰がこの行に貢献したか」を示す方法はありますか?これはページごとに表示され、subversionの非難ツールに似ています。
回答: 私はこのようなものもしばしば必要としますが、すぐに解決できる方法はないようです。私が行ったことは、mediawiki apiを使用してリビジョンを取得し、bazaarバージョン管理システムにインポートするのに役立つスクリプトを作成したことです。 bzr qblame article.wikiを使用すると、誰が何を変更したかがわかりやすくなります。このスクリプトは実際にはリリースの準備ができていませんが、以下または pastebin で見つけることができます。このスクリプトはmercurialリポジトリに追加され、bazaarに変換できます。# i hereby place this script into the public domain! import os, sys import time import mwclient import mercurial.ui from mercurial import localrepo from mercurial import commands article = 'love' #start_time = none start_time = '2011-01-01t00:00:00z' # set up mercurial repo ui = mercurial.ui.ui() repo_dir = article repo = localrepo.localrepository(ui, path=repo_dir, create = not os.path.isdir(repo_dir)) #if not os.path.isdir(article): # os.mkdir(article) #os.chdir(article) print "rep in", repo.root content_path = os.path.join(repo.root, article + '.wiki') site = mwclient.site('en.wikipedia.org') page = site.pages[article] for rev in page.revisions(start=start_time, limit=50,dir='newer', prop='ids|timestamp|flags|comment|user|content'): content = rev['*'] timestamp = time.asctime(rev['timestamp']) comment = rev['comment'].encode('utf8') if len(comment) == 0: comment = "blank" print "writing revision from", timestamp f = open(content_path, 'wb') f.write(content.encode('utf8')) f.close() commands.addremove(ui, repo) commands.commit(ui, repo, message=comment, user=rev['user'].encode('utf8'), date=timestamp)